Parameter estimation for accelerometers, processes, circuits, devices and systems

ABSTRACT

An electronic circuit includes accelerometer ( 1140 ) sensors mounted on different axes, memory circuitry ( 1024 ) and an electronic processor ( 1030 ) coupled to the accelerometer ( 1140 ) sensors and to the memory circuitry ( 1024 ), the electronic processor ( 1030 ) operable to generate signals representing at least one calibration parameter for the accelerometer ( 1140 ) sensors from signals representing data resulting from the accelerometer ( 1140 ) sensors in an imprecise orientation of the accelerometer ( 1140 ) sensors. Information storage media, systems for measuring acceleration, and processes of operation and processes of manufacture are also disclosed.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is related to India Patent Application Number567/CHE/2008 filed Mar. 6, 2008, titled “Estimation Of Bias Error AndAxes Gain For Mems Tri-Axes Accelerometers Implemented On Cell PhonePlatform For Vehicle Navigation” and priority is claimed under the ParisConvention and 35 U.S.C. 119 and all other applicable law.

This application is related to India Patent Application Number565/CHE/2008 filed Mar. 6, 2008, titled “Accurately CalibratingE-Compass For Tilt Error In A Suboptimal IMU System Comprising OfAccelerometer And E-Compass Mounted On Cell Phones” and priority isclaimed under the Paris Convention and 35 U.S.C. 119 and all otherapplicable law.

This application is related to the US patent application titled“Processes for More Accurately Calibrating E-Compass for Tilt Error,Circuits, and Systems” Ser. No. ______ (TI-65997) filed on even dateherewith, and said U.S. patent application is incorporated herein byreference in its entirety.

This application is related to US patent application publication US2009/0054075 dated Feb. 26, 2009, and U.S. patent application Ser. No.11/844,006 (TI-38194) filed Aug. 23, 2007, titled “Satellite (GPS)Assisted Clock Apparatus, Circuits, Systems And Processes For CellularTerminals On Asynchronous Networks” and said U.S. patent applicationdocuments are incorporated herein by reference.

STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT

Not applicable.

COPYRIGHT NOTIFICATION

Portions of this patent application contain materials that are subjectto copyright protection. The copyright owner has no objection to thefacsimile reproduction by anyone of the patent document, or the patentdisclosure, as it appears in the United States Patent and TrademarkOffice, but otherwise reserves all copyright rights whatsoever.

BACKGROUND OF THE INVENTION

This invention is in the fields of electronic computing hardware andsoftware, navigation and communications, and processes of operating andmaking such circuits, devices and systems. Without limitation, thebackground is further described in connection with accelerometer-basedapplications, circuits, devices and systems, such as for portable,including mobile, applications.

Mobile telephony can communicate video and digital data, and voice overpacket (VoP or VoIP), in addition to cellular voice. Streams ofinformation such as video, voice, audio content, images of all kinds,and data should be flexibly handled by such mobile devices andplatforms. But power dissipation can limit time between batteryrecharges and limit the features and number of applications running. Andsystem latency might cause various kinds of delays and lapses indesirable application operation.

Processors of various types, including DSP (digital signal processing)chips, RISC (reduced instruction set computing), information storagememories and/or other integrated circuit blocks and devices areimportant to these systems and applications. Containing or reducingenergy dissipation, system latency and the cost of manufacture whileproviding a variety of circuit, device and system products withperformance features for different market segments are important goalsin integrated circuits generally and system-on-a-chip (SOC) design.

MEMS (micro-electromechanical structure) accelerometers can be used inportable platforms such as cellular phones, personal assistants,positioning devices, and other applications. The platforms are usefulsuch as for freefall detection, tilt sensing, position sensing, velocitymeasurement, gaming applications, elderly monitoring systems, andInertial Navigation systems (INS as an assistance to GPS) in vehicularand pedestrian navigation generally, and e-compass supported navigation.MEMS accelerometers can be used for Inertial Navigation (INS) Assistanceto GPS in GPS challenged environments.

MEMS accelerometers suffer from bias error and axes gain errors whichshould be estimated precisely for applications like tilt sensing,inertial navigation and vehicular and pedestrian navigation. Estimationof accelerometer parameters, such as bias errors and axes gains, of MEMSaccelerometers can be problematic. It is difficult for a cell phone userto estimate and calibrate gain and bias errors in accelerometerson-the-fly. Accordingly, new solutions that provide more fullyuser-friendly embodiments to evaluate accelerometer bias errors and gainerrors would be highly desirable.

SUMMARY OF THE INVENTION

Generally and in one form of the invention, an electronic circuitincludes accelerometer sensors mounted on different axes, memorycircuitry, and an electronic processor coupled to the accelerometersensors and to the memory circuitry, the electronic processor operableto generate signals representing at least one calibration parameter forthe accelerometer sensors from signals representing data resulting fromthe accelerometer sensors in an imprecise orientation of theaccelerometer sensors.

Generally, another form of the invention involves an information storagemedium holding a set of physical representations of instructionsexecutable by an electronic processor to generate signals representingaccelerometer calibration parameters from accelerometer data fromdifferent imprecise orientations.

Generally, a process form of the invention involves a process ofaccelerometer calibration, and the process includes generating signalsrepresenting accelerometer calibration parameters from signalsrepresenting multi-axes accelerometer data from different impreciseaccelerometer orientations.

Generally, a system form of the invention for measuring accelerationincludes a portable device having accelerometer sensors mounted ondifferent axes and operable to supply accelerometer signals representingaccelerometer data, a transducer associated with the portable device andoperable to emit a user-perceptible prompt, and an electronic processorcoupled to the accelerometer sensors and to the transducer, theelectronic processor operable to cause the transducer to emit theuser-perceptible prompt, and the electronic processor operable togenerate signals representing at least one calibration parameter for theaccelerometer sensors in response to the accelerometer signals indifferent freely-establishable orientations of the portable device.

Generally, and in a process of manufacture form of the invention, aprocess of manufacture includes attaching to a printed wiring board anelectronic processor and an accelerometer and a flash memory holding aset of physical representations of instructions executable by theelectronic processor to generate signals representing accelerometercalibration parameters from accelerometer data from different impreciseorientations.

These and other forms of circuit, device, system, information storagemedium, apparatus, process, and other forms of the invention aredisclosed and claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a pictorial diagram of a communications system embodimentincluding system blocks, for example a cellular base station, a DVBvideo station, a WLAN AP (wireless local area network access point), aWLAN gateway, a personal computer, a set top box and television unit,and two cellular telephone handsets, any one, some or all of theforegoing inventively improved as in the other Figures.

FIG. 2 is a block diagram of an electronic system such as for a systemon a chip (SoC) inventively improved as shown in the other Figures.

FIG. 3 is a block diagram of an inventive system including a satellitepositioning engine or GPS engine GE inventively coupled with a processorintegrated circuit in FIG. 2 operating as a cellular engine CE.

FIG. 4 is a flow diagram of an inventive process and structure forobtaining accelerometer data for calibration purposes and determiningwhether recalibration is recommended.

FIG. 5 is a flow diagram of an inventive process and structure forobtaining accelerometer data and accelerometer pre-calibration.

FIG. 6A is a flow diagram of an inventive process and structure forobtaining accelerometer data for subsequent use in calibration.

FIG. 6B is a flow diagram of an inventive process and structure forrecalibration using accelerometer data from FIG. 6A.

FIG. 6C is a flow diagram of another inventive process and structure forrecalibration using accelerometer data from FIG. 6A.

FIG. 7A is a flow diagram of another inventive process and structure forobtaining and pre-qualifying accelerometer measurements data forsubsequent use in calibration.

FIG. 7B is a flow diagram of an inventive process and structure forproviding and managing sets of measurements for recalibrating anaccelerometer.

FIG. 8 is a flow diagram of an inventive process for selectivelydetermining modes of recalibration.

FIG. 9 is a block diagram of an inventive process and structure forgenerating accelerometer parameters as in any of the other Figures andusing them in a position engine.

FIG. 10 is a block diagram of an inventive process and structure forgenerating accelerometer parameters as in any of the other Figures andusing them in a tilt compensation engine for supporting an e-compass.

FIG. 11 is a flow diagram of an inventive process of manufacturing theinventive systems shown in other Figures.

FIG. 12 is a flow diagram of an inventive process of manufacturinginventive integrated circuit chips having circuits and operations shownin the other Figures.

FIGS. 12A, 12B, and 12C are respective layout diagrams of variousexample forms of inventive integrated circuit chips provided withcircuits and operations shown in the other Figures.

Corresponding numerals in different figures indicate corresponding partsexcept where the context indicates otherwise.

DETAILED DESCRIPTION OF EMBODIMENTS

In FIG. 1, an improved communications system 2000 has system blocks asdescribed next and improved with any one, some or all of the circuitsand subsystems and processes shown in various Figures of the drawing.Any or all of the system blocks, such as cellular mobile telephone anddata handsets 2010 and 2010′, a cellular (telephony and data) basestation 2050, a WLAN AP (wireless local area network access point, IEEE802.11 or otherwise) and/or a Voice over WLAN Gateway 2060 with uservoice over packet telephone 2085 (not shown), and a voice enabledpersonal computer (PC) 2070 with another user voice over packettelephone (not shown), communicate with each other in communicationssystem 2000. Worldwide web 2065 with website 2055 is readily accessible.

“Navigation” as used herein includes any one, some or all of position,direction, heading, tilt, altitude, azimuth, velocity and accelerationsensing and/or location-based applications, position-based applications,map-related applications, trajectory control, braking control, cruisecontrol, steering control, engine control, course monitoring andcompletion, maneuvering, free fall detection, image acquisition control,image stabilization, and other applications combining or benefiting fromany of the foregoing. “Portable device” as used herein includes anydevice, apparatus, or system, such as those stated herein as well asothers, that is sufficiently movable in orientation to utilize andbenefit from the embodiments and teachings herein.

In FIG. 1, personal and/or vehicular navigation is supported by anaccelerometer 1140 and an electronic compass (e-compass) 1150. Anenvironmental sensor 1160 is provided to check any one, some, or all ofthe temperature, humidity, pressure and/or other environmental physicalvariables. A miniature Gyro 1170 (gyroscopic inertial assembly) can beprovided, with dimensions compatible with the form factor of theportable device. As part of a display screen or in addition, promptingtransducers 1180 are provided for emitting flashing light signals,audible speech, and/or audible sounds such as calibration orientationprompts and distinct calibration confirmation prompts to the user.Processor integrated circuit 1022 is coupled to a satellite positioningintegrated circuit 1190 for GPS or otherwise. GPS (Global PositioningSystem) is an earth-satellite-based electronic system for enabling GPSreceivers in ships, aircraft, land vehicles and land stations todetermine their geographic and spatial position such as in latitude,longitude, and altitude. Discussion of GPS herein is without limitationto other analogous satellite-based electronic systems. The GPS circuit1190 has an antenna 1195.

A camera 1490 provides video pickup for cell phone 2010 to send over theinternet to cell phone 2010′, personal digital assistant/personalentertainment unit PDA/PEU 2096, STB (set top box) 2092 and televisionTV 2094, automobile 2095 and to a monitor of PC 2070 via any one, someor all of cellular base station 2050, DVB (digital video broadcasting)station 2020, and WLAN AP/gateway 2060. Handsets 2010 and 2010′ have amanual input 1050′ such as a keyboard, a microphone 1055, a display1060, and user prompt transducer(s) 1180 such as a flashing LED and/oraudible transducer. Analogously, PDA/PEU 2096 has user prompttransducer(s) 2097, and a display 2098. Handsets 2010 and 2010′ have avideo storage and other information storage medium, such as hard drive,flash drive, high density memory, and/or compact disk (like CD 2075) inthe handset or external thereto for installation of applications, etc.Digital video recording (DVR) is supported, such as for delayedreproduction, transcoding, and retransmission of video to other handsetsand other destinations.

On a cell phone printed circuit board (PCB) 1020 in handset 2010, isprovided a secure processor integrated circuit 1022, an external flashmemory 1025 and SDRAM (synchronous dynamic random access memory) 1024,and a serial interface 1026. A Power, Resets, and Control Module PRCM1050 (1770 of FIG. 2) is included to perform power and energy managementand other support functions. Serial interface 1026 is suitably awireline interface, such as a USB interface connected by a USB line tothe personal computer 2070 and magnetic and/or optical media 2075.

Cell phone 2010 intercommunication also occurs via modems 1100, such asa cellular modem, WLAN, Bluetooth, and any other modem(s) and can accessa website 2055 or 2065, television and physical layer (PHY) or othersuch circuitry 1100′. A WLAN and/or WiMax portion includes MAC (mediaaccess controller), PHY (physical layer) and AFE (analog front end). AMIMO UWB (ultra wideband) MAC/PHY supports OFDM in 3-10 GHz. UWB bandsfor communications in some embodiments. A digital video integratedcircuit provides television antenna tuning, antenna selection,filtering, and RF input stage for recovering video/audio/controls fromDVB station 2020.

Processor integrated circuit 1022 has MPU (or CPU) block 1030 coupled toan internal (on-chip read-only memory) ROM 1032, an internal randomaccess memory RAM 1034, and flash memory 1036. A security logic circuit1038 is coupled to secure-or-general-purpose-identification value(Security/GPI) bits 1037 of a non-volatile one-time alterable ProductionID register or array of electronic fuses (E-Fuses), for enhancing securee-commerce and system security generally. Depending on the Security/GPIbits, boot code residing in ROM 1032 responds differently to a Power-OnReset (POR) circuit 1042 and to a secure watchdog circuit 1044 coupledto processor 1030. Secure Demand Paging 1040 supports the system andincreases the effective size of secure memory.

In this way, advanced networking capability for services, software, andcontent, such as cellular telephony and data, navigation applications,audio, music, voice, video, e-mail, gaming, security, e-commerce, filetransfer and other data services, internet, world wide web browsing,TCP/IP (transmission control protocol/Internet protocol), voice overpacket and voice over Internet protocol (VoP/VoIP), robotics,medical-related services, and other services accommodates and providessecurity for secure utilization and entertainment appropriate to thejust-listed and other particular applications.

The embodiments, applications and system blocks disclosed herein aresuitably implemented in fixed and portable devices such as for mobile,automotive 2095, seaborne, and airborne, communications, control, settop box 2092, television 2094 (receiver or two-way TV), and otherapparatus. DLP™ display technology from Texas Instruments Incorporated,or liquid crystal display LCD or other video display technology iscoupled to any of the system blocks of FIGS. 1 and 2. A transparentorganic semiconductor display is provided on one or more windows of thevehicle 2095 of FIG. 1 and wirelessly or wireline-coupled to the videofeed from the system 1700 of FIG. 2. The personal computer (PC) 2070 issuitably implemented in any form factor such as desktop, dockingstation, laptop, palmtop, organizer, mobile phone handset, PDA personaldigital assistant 2096, internet appliance, wearable computer, contentplayer, TV/appliance handheld remote control device, wireless pointerfor game displays and other computer displays, still camera and othercamera stabilization and display image stabilization, wearable personalsafety monitor, personal area network, or other type and usable withmedia 2075 such as optical disk, flash drive, and other media.

In combination with the GPS circuit 1190, and the video display, theRISC processor 1422 and/or IVA (imaging and video applications unit) DSP1424 support location-based embodiments and services of various types.These services provide roadmaps and directions thereon to a destination,pictorials of nearby commercial establishments, offices, and residencesof friends, various family supervision applications, position sending tofriends or to emergency E911 service, and other location based servicesnow known or yet to be devised. For such services, fast time of positionfixing, low system power consumption, and reliability of accuratetimekeeping to support position-based services even during powermanagement operations and cellular network base station handover orhandoff operations are all desirable for improved technology such assupported by various embodiments herein.

It is contemplated that the skilled worker uses each of the integratedcircuits shown in FIGS. 1 and 2, or such selection from the complementof blocks therein provided into appropriate other integrated circuitchips, or provided into one single integrated circuit chip, in a manneroptimally combined or partitioned between the chips, to the extentneeded by any of the applications supported by the cellular handsets2010 and 2010′, DVB station 2020, cellular telephone base station 2050,personal computer(s) 2070 equipped with WLAN, Voice WLAN accesspoint/gateway 2060, as well as radios and televisions, Internetaudio/video content players, fixed and portable entertainment units,routers, pagers, personal digital assistants (PDA), organizers,scanners, faxes, copiers, household appliances, office appliances,microcontrollers coupled to controlled mechanisms for personal, roboticand/or automotive use, combinations thereof, and other applicationproducts now known or hereafter devised for increased, partitioned orselectively determinable advantages.

In FIG. 2, a system 1700 for use in FIG. 1 has a MPU (microprocessorunit) subsystem 1705 with MPU core(s) 1422, an IVA subsystem 1424, andDMA (Direct Memory Access) subsystems 1710.i. Personal and/or vehicularnavigation is supported by accelerometer 1140 and/or gyro 1170 and/orelectronic compass (e-compass) 1150. The MPU subsystem 1705 suitably hasone or more processor cores 1422 with RISC or CISC or other suitablecentral processing units CPUs such as with superscalar processorpipeline(s) with L1 and L2 caches. Either or both of the MPU subsystem1705 and IVA subsystem 1424 has hardware for single cyclemultiply-accumulates for matrix processing and fast loop execution,image processing, video processing, and audio processing. IVA 1424provides one or more programmable digital signal processors (DSPs) formulti-standard (MPEG4, WMV9, RealVideo®, H.263, H.264) encode/decode atD1 (720×480 pixels), and 720p MPEG4 decode, for some examples. Alsointegrated are a 2D/3D graphics engine, a Mobile DDR Interface, andnumerous integrated peripherals as selected for a particular systemsolution. The IVA subsystem 1424 has L1 and L2 caches, RAM and ROM, andhardware accelerators as desired such as for motion estimation, variablelength codec, and other processing. DMA (direct memory access)subsystems 1710.i perform target accesses via target firewalls 1722.iand 1712.i of FIG. 1 connected on interconnects 1721, 1734. A target isa circuit block targeted or accessed by another circuit block operatingas an Initiator. Some Initiators are MPU 1422, DMA subsystems 1710.i,Universal Serial Bus USB HS, and a secure debug access port to anemulation block EMU. In order to perform such accesses the DMA channelsin DMA subsystems 1710.i are programmed. Each DMA channel specifies thesource location of the Data to be transferred from an Initiator and thedestination location of the Data for a target.

Data exchange between a peripheral subsystem and a memory subsystem andgeneral system transactions from memory to memory are handled by theSystem SDMA 1710.1. The DMA channels support interconnect qualifierscollectively designated MreqInfo, such as MreqSecure, MreqPrivilege,MreqSystem in order to regulate access to different protected memoryspaces. The system configures and generates these different accessqualifiers in a security robust way and delivers them to hardwarefirewalls 1712.1, 1712.2, etc. via lines 1738 as well as to firewalls1722.1, 1722.2, etc. associated with some or all of the targets. Thehardware firewalls protect the targets according to different accessrights of initiators. The DMA channels 1715.1, .2, etc. are configurablethrough the L4 Interconnect 1734 by the MPU subsystem 1705. Firewallconfiguration on a DMA interface 1715.i restricts different DMA channelsaccording to the configuration previously written to configurationInternal Register fields. This Firewall configuration implementshardware security architecture rules in place to allow and restrictusage of the DMA channel qualifiers used in attempted accesses tovarious targets. When an attempt to configure access for DMA channels ina disallowed way is detected, in-band errors are sent back to theinitiator that made the accesses and out-band errors are generated to aControl Module 1765 and converted into an MPU Interrupt for securityattack detection and neutralization.

Data exchanges within a DSP subsystem 1710.2 are handled by the DSP DMA1718.2. Data exchange to store camera 1490 image capture is handledusing a Camera DMA 1718.3 in camera subsystem CAM 1710.3. The CAMsubsystem 1710.3 suitably handles one or two camera 1490 inputs ofeither serial or parallel data transfer types, and provides imagecapture hardware image pipeline and preview. Data exchange to refresh adisplay 1060 is handled in a display subsystem 1710.4 using a DISP DMA1718.4. This subsystem 1710.4, for instance, includes a dual outputthree layer display processor for 1xGraphics and 2xVideo, temporaldithering (turning pixels on and off to produce grays or intermediatecolors) and SDTV to QCIF video format and translation between othervideo format pairs. The Display block 1710.4 feeds a user-viewabledisplay, such as a DLP™ display from Texas Instruments Incorporated oran LCD panel or other display, using either a serial or parallelinterface. Also television output TV and Amp provide CVBS or S-Videooutput and other television output types for display.

In FIG. 2, a hardware security architecture including SSM 1760propagates qualifiers such as an MreqSystem qualifier for virtualmachines on the interconnect 1721 and 1734. The MPU 1422 issues bustransactions and sets some qualifiers on Interconnect 1721. SSM 1760also provides one or more qualifiers. The bus transactions propagatethrough the L4 Interconnect 1734 and then reach a DMA Access PropertiesFirewall 1712.1. Transactions are coupled to a DMA engine 1718.i in eachsubsystem 1710.i which supplies a subsystem-specific interrupt to theInterrupt Handler 1780. Interrupt Handler 1780 is also fed one or moreinterrupts from Secure State Machine SSM 1760 that performs securityprotection functions. Interrupt Handler 1780 outputs interrupts for MPU1422. In FIG. 2, firewall protection by firewalls 1722.i is provided forvarious system blocks 1720.i, such as GPMC (General Purpose MemoryController) to Flash memory 1720.1, ROM 1720.2, on-chip RAM 1720.3,Video Codec 1720.4, WCDMA/HSDPA 1720.6, device-to-device SAD2D 1720.7coupled to manual input 1050 such as keypad, Modem(s) 1100, and to amixed signal (digital and analog) circuit coupled to microphone (MIC)1055. DSP 1720.8 and DSP DMA 1728.8 also support the system viainterconnect 1721. A System Memory Interface SMS with SMS Firewall 1755is coupled to SDRC 1752.1 (External Memory Interface EMIF with SDRAMRefresh Controller) and to system SDRAM 1750 (1024).

In FIG. 2, interconnect 1734 is also coupled to Control Module 1765 andcryptographic accelerators block 1740 and a continually-powered Wakeupblock WKUP 1770. Wakeup block 1770 has a Power, Reset and Clock ManagerPCRM for power management and wakeup and a RTC (real time clock) formaintaining time and date. PRCM is coupled via L4 interconnect 1734 toPower IC circuitry in a power chip 1200 powered by a battery pack 1280.Chip 1200 supplies controllable supply voltages VDD1, VDD2, etc. for therest of the system 1700. PRCM 1770 is coupled to L4 Interconnect 1734and coupled to Control Module 1765. PRCM 1770 is coupled to a DMAFirewall 1712.i to receive a Security Violation signal, if a securityviolation occurs, and to respond with a Cold or Warm Reset output. AlsoPRCM 1770 is coupled to the SSM 1760.

In FIG. 2, some embodiments have symmetric multiprocessing (SMP) core(s)such as RISC processor cores in the MPU subsystem. A hardware (HW)supported secure hypervisor runs a SMP core. Linux SMP HLOS (high-leveloperating system) is symmetric across all cores and is chosen as themaster HLOS in some embodiments.

In FIG. 2, digital circuitry in modem(s) 1100 supports and provideswireless interfaces for any one or more of GSM, GPRS, EDGE, UMTS, andOFDMA/MIMO embodiments. Digital circuitry provides codec for CDMA (CodeDivision Multiple Access), CDMA2000, and/or WCDMA (wideband CDMA orUMTS) wireless suitably with HSDPA/HSUPA (High Speed Downlink PacketAccess, High Speed Uplink Packet Access) (or 1xEV-DV, 1xEV-DO or3xEV-DV) data feature via an analog baseband core and RF GSM/CDMA core.An audio/voice block supports audio and speech/voice functions andinterfacing. Speech/voice codec(s) and user voice-recognition/voicecontrol are suitably provided in memory space in the audio/voice blockfor processing by processor(s) 1422, 1424. Modem(s) 1100 are coupled foruse by personal and/or vehicular navigation applications toaccelerometer 1140 and/or electronic compass (e-compass) 1150 and/orlocation-determining circuitry 1190 for GPS (Global Positioning System).Environmental sensor(s) 1160 are likewise coupled to the system. IC 1100is also coupled to a USIM (UMTS Subscriber Identity Module).

In FIG. 2, an audio block has audio I/O (input/output) circuits to aspeaker, a microphone, and headphones (not shown). The audio block isalso coupled to an audible piezoelectric transducer in promptcalibration transducer 1180, which also has an LED (light emittingdiode) that controllably emits flashing calibration initiation promptsand calibration confirmation prompts for accelerometer calibration.

In FIG. 3, the improved system of FIG. 2 is further detailed. Personaland/or vehicular navigation is supported by accelerometer 1140 and/orelectronic compass (e-compass) 1150, environmental sensor 1160, gyro1170, prompt transducers 1180, and/or GPS unit 1190. GPS unit 1190 hasan antenna 1195 for reception of satellite positioning signals andcoupled to a GPS RF receiver provided as an analog or mixed-signalintegrated circuit that in turn supplies signals to a digital GPSbaseband decoder 2160 integrated circuit. GPS baseband decoder 2160 iscalled a satellite positioning engine or GPS engine GE 2160 herein. GPS(Global Positioning System) is a satellite positioning system forsupplying satellite signals to GE 2160. The acronym GE herein is used todesignate a baseband decoder circuit such as a satellite positioningcomputing engine herein whether of GPS type or any other satellitepositioning scheme.

GE 2160 is coupled to the rest of system 1700 of FIGS. 2 and 3 by linesTIMESTAMP 2170 for timekeeping signals, GPS_IO 2175 for position data,and GPS_CTRL 2190 for controls. The rest of system 1700 is called aCommunication Engine or Cellular Engine CE for this purpose and has aprocessor in hardware, or in hardware combined with software/firmware.In FIG. 3, Cellular Engine CE acts as a processing engine for timeinformation derived from the cellular communications network. CE alsoprocesses some information from GE 2160, or not, depending onembodiment. CE need not be limited to cellular or wireless communicationnetworks.

In FIG. 3, a printed wiring board has signal connection line TIMESTAMP2170 and GSP_IO 2175 that couple strobe pulses and time-relatedinformation between the GE and CE. GE is coupled as a peripheral by aUART 2180 (universal asynchronous receiver/transmitter, i.e., aparallel/serial interface such as I2C, XPA, etc.) to interconnect 1734of FIG. 2. Accordingly, a data bus 2185 in interconnect 1734 providescontrols and data as parallel bits to the UART 2180 and these bits aresupplied on particular lines in a set of lines 2190 to control the GE.For example, these lines convey control inputs to GE 2160 including aGSP_SLEEP input, a soft enable/reset GPS_EN_RESET, and a power up enableGPS_PWR_EN. Further lines to GE 2160 include interface lines forbi-directional serial communication.

In FIG. 3, a first clock 2162, such as a temperature compensated crystaloscillator TCX0, has a frequency illustratively between 10 and 100 MHzor higher, that during reception is continually (or selectively) lockedto or synchronized with clocks present in base stations. Betweenreceptions the first clock 2162 keeps time when GPS 1190 is asleep, andclock 2162 itself is switched off or is left to run depending on theoperating mode. A second clock 2164 has a lower frequency, e.g., below 1MHz. such as at 32 KHz. The second clock 2164 is on and operativebetween receptions when the first clock 2162 is turned off for powersaving. Processing circuitry CE is connected to the modem(s) 1100 and tothe first clock 2162 and second clock 2164 and to GE 2160.

In FIGS. 4-6B, an accelerometer calibration solution estimates Biaserrors and Axes gain of MEMS three-axes accelerometers 1140 mounted on asmart phone 2010 or other portable device. Such solution recognizes thepractical aspects of calibrating accelerometers 1140 by users andprovides a set of embodiments for users that are easier to use and moreconvenient compared to a relatively demanding and less-convenientsix-posture approach.

One demanding approach in estimating bias errors and axes gain involvesorienting the 3 axes accelerometer 1140 of FIG. 1 in six fixed postures:the first one where the x-axis is exactly parallel to the gravity vectorg followed by the second one where x-axis is exactly anti-parallel togravity vector g. The third and fourth postures are with respect toy-axis parallel and anti parallel to gravity vector g and the last twopostures are related to z-axis being parallel and anti-parallel togravity vector g. Measurements need to be done first on a preciselyhorizontal platform followed by measurement done with precise pitch androll of the platform. The accuracy of the method is limited by theangular precision of the setup. The bias errors μ and axes gain S arecomputed from the averaged accelerometer reading of all three axes.While the six-posture method is computationally simple, an accuratemeasurement by this method requires an accurate and well-calibratedsetup in a controlled environment. Any inaccuracy can result in errorsin estimating bias errors and gain errors. Such inaccuracy in turn canlead to convergence delays in applications requiring precise estimates(e.g., Inertial Navigation and Pedestrian Navigation). Moreover, suchinaccuracy can result in heading errors (such as direction relative toNorth) in platforms that use electronic compass 1150 and/or gyroscope1170 technology that relies on an accelerometer 1140 for tiltcompensation. This demanding six-posture method is not user friendlybecause it is not practical for cell phone users if they want tocalibrate the accelerometer 1140 on the fly. It also calls for costlysetup arrangements even for cell phone manufacturers.

Embodiments of method and system herein remove the necessity ofaccurately orienting the accelerometer 1140. Instead, accelerometer 1140readings at rest in different, imprecise or unspecified,freely-establishable orientations are conveniently taken. Precise orspecific postures need not be prescribed nor relied upon while takingthese readings. An ordinary or regular user can easily tilt the cellphone 2010, PDA 2096, or other portable device in different orientations2535A, 2535B, 2535C and perform the calibration. Since the exactpostures are not of concern, there is no requirement on the accuracy ofthe postures.

Various embodiments work on the datasets signaled by accelerometer 1140at different imprecise, unspecified, non-specific or unknownorientations and nevertheless can estimate best-fit values for variousaccelerometer parameters, such as the axes gain and bias errors, etc. Inother words, various embodiments of structure and process benefit fromdifferent orientations 2535A, B, C that are freely-establishable anduser-determinable. No test fixture, calibration jig, norotherwise-additional precision test instrumentation is required. Varioustypes of accelerometer 1140 sensors, such as capacitive, piezoelectric,optical, MEMS (micro-electromechanical structure), and/or gyroscopic andothers can be employed.

In FIG. 4, operations in this more-convenient approach commence inresponse to a step 2510 wherein the user clicks an icon, orrecalibration item on a menu display of the portable device, orotherwise prompts a fetch of recalibration software as improved herein.The method is useful and handy for end-user, who may do a quickcalibration of the accelerometer 1140 before deploying a particularapplication, e.g., Inertial Navigation assisted Pedestrian Navigation.Also, a parallel step 2520 responds to any internal prompt from thesystem software requesting recalibration software operation. Any of asuite of navigation applications 2524 can request accelerometer 1140recalibration on processor 2522, or the operating system software ordriver can call for recalibration when a navigation application is aboutto be launched. If substantial time has passed since last recalibration,as measured by Date/Time RTC 2526, or the accelerometer 1140 has neverbeen calibrated as indicated by calibration parameters merely set totheir original initialization values (TABLE 1 later herein below), thenan internal flag is set for processor 2522 to generate an internalprompt. A substantial change in the environment, such as a temperaturechange, detected by environmental sensor(s) 1160 can also trigger arecalibration request.

A succeeding step 2530 cues the user such as by display messages and/oraudible instructions calling for the user to position the accelerometer1140 in different orientations or directions 2535A, B, C to accumulatedata for calibration purposes. Various position assist prompts aresuitably given to the user to clarify and facilitate the measurementprocess. A succession 2535 of cues and measurements occurs, as suggestedby orientation-changing arrows 2535A, 2535B, and 2535C in FIG. 1. Inthis way, accelerometer 1140 measurements are taken with theaccelerometer 1140 in different directions or orientations. The userchanges the orientation in various directions using various orientationchanges and combinations of the arrows 2535A, 2535B, and 2535C. Theorientation changes and arrows are applicable to any of the portabledevices like PDA/PEU 2096, cell phones 2010 and 2010′, vehicle device2095, etc. The user can change the orientation readily, and manuallyholds the device stationary in each new orientation. If desired, theuser also can rest the portable device in various orientations on a deskor table leaning against any convenient object.

The portable device is programmed to cue the user with a beep and/orflash when each measurement is to be taken. Then after the orientationis stable and the measurement is acquired, a beep-beep and/ordouble-flash from prompt transducers 1180 is issued. If the orientationis not changed within a modest time interval, then a single cueing beepis again issued as a reminder. Any of numerous other audible sounds andoptical cues and/or other cues can be issued in various embodiments, andhuman factors engineering can be applied to establish convenient,understandable cues/prompts.

In FIG. 4, step 2540 ascertains that the accelerometer 1140 has beenmaintained stationary in a given orientation for a sufficient intervalof time to substantially average out measurement error and permitcalculation of offsets, biases or parametric errors in the accelerometer1140 sensors themselves. In a vehicle 2095 moving at constant velocity,stationarity is also satisfied if the accelerometer 1140 is heldstationary relative to the vehicle 2095 by the user inside the vehicle.In moving vehicles, note that micro jerks can make the measurementssignificantly more noisy. Hence, some embodiments perform thesemeasurements when the vehicle is not moving as in FIGS. 4 and/or 5, andscreening as in FIG. 5 operates to reject measurements made in thepresence of substantial noise. Some other embodiments perform themeasurements either when the platform is stationary or in a vehiclemoving at constant velocity and accommodate increased noise due to microjerks by providing extended or adaptive averaging time intervals and/orother measurement noise-rejection processes and structures andmeasurement screening, such as in FIGS. 4 and 5 or otherwise effectivefor the purpose. Either way, the acceleration vector comprised of theoutputs of the accelerometer sensors represents the one constantdownward acceleration due to gravity g in connection with all theaccelerometer measurements in every one of the orientations.

A further step 2550 performs a pre-calibration calculation of theparameters of the accelerometer 1140, such as bias errors μ and axesgains S for each of the three accelerometer sensors X, Y, Z that bestfit with the measurements. A step 2560 performs position sensingcalculations that blend the accelerometer 1140 information (INS) and GPSposition information as in FIG. 9. Then a decision step 2570 determineswhether the accuracy of calibration is insufficient as indicated by anysubstantial unexpected inaccuracy, trend, or drift in positionmeasurement. At first, decision step 2570 determines that the accuracyis sufficient, goes to RETURN 2575, and proceeds to perform navigationapplications 2524 upon user command or otherwise when launched. However,with passage of time, or with substantial and prolonged temperaturechanges, or some other factor, decision step 2570 can determine thatrecalibration is called for, whereupon operations proceed to a step 2580to prompt the user to decide for recalibration and go to step 2520 or2510.

FIG. 5 details step 2540 of FIG. 4. In FIG. 5, a step 2610 delivers alatest measurement vector for acceleration from accelerometer 1140. Themeasurement is screened or checked for credibility by steps 2620 and2630. Step 2620 tests whether the resultant vectorial sum of thecomponents of the latest measurement vector represents accelerationclose to one-g, i.e., the acceleration of gravity 1 g. If not close to 1g, operations discard the measurement and go back from step 2620 to2610.

For example, if the user were still accelerating or decelerating theportable platform 2010 holding the accelerometer sensors in the processof changing the orientation of the platform, then the latest measurementvector that can depart significantly from the 1 g acceleration ofgravity. Also, if the platform were accidentally dropped, theaccelerometer sensors would be in free fall and would produce ameasurement vector that would depart significantly from the 1 gacceleration of gravity. In use at run-time, measurements byproperly-calibrated accelerometer sensors that depart from 1 gsignificantly would acceptably and desirably contribute tovelocity-sensing and position-sensing. In this example of a specificallydistinct calibration process at step 2620, however, the platform isoriented and held stationary in such a way that the acceleration isclose to one-g.

Of course, sensors in need of calibration will supply measurement datathat seemingly departs from 1 g acceleration of gravity, but moderately(e.g., within a small decision range on the order of plus/minus onepercent +/−0.01 g). This decision range can be established, forinstance, in relation to accelerometer vendor specified bias error(offset) range and gain error range. A programmed decision range used bystep 2620 does accept a measurement that departs moderately from 1 gacceleration of gravity. In such case, operations proceed to a step2630. (It may be better to perform these measurements with an assuranceof stationarity from the user. Else, the data may be corrupted by smallaccelerations that falls in the decision range.)

In FIG. 5, step 2620 and step 2610 are alternated in a measurement looptransparent to user so that a series of acceleration vector measurementsover an about-one-second interval are made and pass step 2620. When step2630 is reached, the series of acceleration vector measurements fromstep 2610 that pass step 2620 for a given single orientation of theaccelerometer 1140 are available for analysis collectively. Step 2630computes the statistical variance (average squared-departure from theirmean) of the series of acceleration vector measurements. This or anyother suitable approach is applied to determine that each one of theaccelerometer 1140 X, Y, Z sensor outputs f^(m)(k)=[f_(x) ^(m)(k) f_(y)^(m)(k) f_(z) ^(m)(k)]^(T) is essentially stable or unvarying. If thestatistical variance is greater than a predetermined threshold (e.g.,0.01 or less), then operations discard the series of measurements, andgo back to step 2610 to repeat the procedure for that platformorientation. An associated message to the user is suitably also providedto encourage physical stationarity. If the statistical variance is lessthan the predetermined threshold value at step 2630, then operationsproceed. In some embodiments, the user is informed that the measurementis successful and cued for another orientation whereupon operationsagain go back to step 2530 of FIG. 4. The measurement acquisitionprocess is repeated for another orientation until measurementscorresponding to a predetermined number of different orientations havebeen acquired, whereupon a further part 2640 of the calibrationprocedure is executed as described herein. In some other embodiments,the mean of the series of acceleration vector measurements from step2610 is passed directly to calibration procedure 2640 as describedelsewhere herein.

The embodiments are user friendly. An ordinary user can orient the cellphone in six or more orientations and perform the calibration of biaserrors and axes gains. Accelerometer bias error and sensitivityspecifications are subject to inaccuracies of orientation inaccelerometer vendor test setups when using the demanding six-posturemethod described earlier hereinabove. Here, the calibration embodimentsdo not depend on exact posture or accuracy of orientations and can beused not only by accelerometer manufacturers and portable devicemanufacturers to tighten their specs on parameters such as bias errorsand sensitivity, but also by ordinary users.

Smart phones 2010 and 2010′, such as in third-generation (3G) phonecategory can include Inertial Navigation as a beneficial navigationfeature using MEMS (micro-electromechanical structure) 3-axisaccelerometer 1140, gyros and e-compass 1150. MEMS accelerometers arelow cost, low power devices that are quite useful in inertial navigationproviding information on acceleration along its axes as well asperforming as tilt sensors. Inertial navigation for vehicular navigationis however susceptible to accelerometer bias errors and gain errors. Thevelocity (speed) and the distance traversed by a vehicle 2095 areobtained by integrating the accelerometer 1140 output once and twicerespectively. Accelerometer bias error can produce over time a linearerror in velocity, and a quadratic error in distance due totime-integration (e.g., see equation (42.1) described later hereinbelow).

In vehicle navigation, it is important to correct the bias errors μ andgain errors S of an accelerometer 1140 periodically to prevent a rapidbuild up in velocity and distance. For instance, a Kalman Filter can beprovided to receive GPS (Global Positioning System) 1190 andaccelerometer 1140 (Inertial) measurements and then calibrate theinertial output with respect to good GPS measurements. Reasonableestimates of the bias errors and gain errors of a given accelerometer1140 help to define the initial states and facilitate quick convergenceof the calibration filter. A 3-axis accelerometer 1140 exposed toacceleration (f^(a)) {=[f_(x)f_(y)f_(z)]^(T)} registers accelerationoutputs (f_(m)) in all three axes given by:

f ^(m) =S*[f ^(a) _(x) f ^(a) _(y) f ^(a) _(z)]^(T) +μ+w  (1)

where, S is the gain (sensitivity) matrix, μ is the bias error vectorreferenced to the gravitational acceleration and w is a noise vectorrepresenting the accelerometers noise on all three axes X, Y, Z.

In this example and in all formulations beyond this point, theacceleration values are referenced to the acceleration due to gravity inthat location, where in the acceleration due to gravity is defined avalue of unity. The actual accelerations in S.I. unit would be obtainedby multiplying the corresponding acceleration vector with the actualgravity of that location (e.g. obtained from WGS 84 model).

Notice that if the measurement process is arranged to average out thenoise w, then

f ^(aT) =S ¹*(f ^(m)−μ)  (1A)

The three diagonal elements Sx, Sy, Sz of the gain matrix S are the gaincoefficients for individual axes X, Y, Z while the six off-diagonalterms Sxy, Syx, Szx, Sxz, Syz, Szy represent cross-axes gain from eachorthogonal axis. The cross-axes terms arise from small alignment errorsof the individual sensor axes in the three axis accelerometer 1140.Typically the cross axis effects are less than 2% for state of art MEMSaccelerometers and do not affect the inertial measurements significantlyfor purposes of some applications. MEMS accelerometer vendors canspecify error bounds for bias error and axes gain errors.

Suppose the demanding six-posture method were used to estimate thecoefficients of Gain matrix S and bias error μ. A precise test set upmeasures acceleration output vectors at 6 different orientations, thefirst one with the x-axis towards gravity axis or vector g followed bythe second one with x-axis against gravity axis or vector g; the thirdand fourth one corresponding to y axis towards and against the gravityaxis or vector g and the fifth and sixth one corresponding to z-axistowards and against the gravity axis or vector g. The measurements areaveraged over a long enough time to reduce the effect of accelerometer1140 noise.

The corresponding equations for averaged measured vector (fm) in thesix-posture method are given by:

f1m=S*[1 0 0]^(T)+μ  (2)

f2m=S*[−1 0 0]^(T)+μ  (3)

f3m=S*[0 1 0]^(T)+μ  (4)

f4m=S*[0 −1 0]^(T)+μ  (5)

f5m=S*[0 0 1]^(T)+μ  (6)

f6m=S*[0 0 −1]^(T)+μ  (7)

The bias error parameter vector μ and gain parameter matrix S areestimated in the six posture method as follows. Local acceleration dueto gravity is normalized to unity here, and plus/minus unity inequations (2)-(7) represents the orientation of a given one of the threeaccelerometer sensors parallel or anti-parallel to the downwardgravitational acceleration. The zeros in equations (2)-(7) represent thenegligible acceleration measured in each of the six postures by theother two accelerometer sensors, which are assumed to have perfectlyorthogonal orientations relative to the given sensor. Because of the sixprecise orientations reflected by the measured acceleration vectors [1 00]^(T), [−1 0 0]^(T), . . . [0 0 −1]^(T) of the accelerometer 1140 onthe test stand, adding all those measured acceleration vectors cancelsout contributions from matrix S and delivers the bias error vector μ byequation (8):

$\begin{matrix}{\mu = {\sum\limits_{k = 1}^{6}{f_{km}/6}}} & (8)\end{matrix}$

Moreover, because of the six precise orientations, pair wise subtractionfor each of the three pairs of measured acceleration vectors cancels thebias error vector μ and delivers three column vectors comprised inestimated parameter matrix S, all according to equation (9):

S=[(f _(1m) −f _(2m))/2(f _(3m) −f _(4m))/2(f _(5m) −f _(6m))/2]  (9)

The demanding six-posture method has some practical difficulties inimplementation. Small errors in orientation of each accelerometer sensoron the precision test stand relative to the gravitational accelerationvector g (i.e., straight down) cause erroneous estimation of bias errorvector μ and axes gain matrix S. For an accelerometer 1140 in a cellphone 2010 that may need to get calibrated by a phone user, it would bedifficult to implement the six-orientation based scheme that demandshigh accuracy of the orientation.

By contrast, an approach to solving the problems more conveniently isdescribed herein and has various embodiments. At any point of time thetrue acceleration measurements of all three axes X, Y, Z at condition ofrest produce a resultant vector of a unit of gravitational accelerationg. Normalizing the true acceleration vector f^(a) for gravitationalacceleration g to be unity, the true accelerations f^(a) of the 3-axis[f_(x) ^(a) f_(y) ^(a) f_(z) ^(a)]^(T) satisfies the equation:

f^(a)f^(aT)=[f_(x) ^(a)f_(y) ^(a)f_(z) ^(a)][f_(x) ^(a)f_(y) ^(a)f_(z)^(a)]^(T)=g²=1  (10)

Using equations (1A) and (10), equation (11) represents the constancy ofthe gravitational acceleration regardless of the posture of theaccelerometer 1140:

(f ^(m)−μ)^(T)(S ⁻¹)^(T)(S ⁻¹)(f ^(m)−μ)=g ²  (11)

The three accelerometer 1140 X, Y, Z sensor outputs f^(m)(k)=[f_(x)^(m)(k) f_(y) ^(m)(k) f_(z) ^(m)(k)]^(T) represent a kth measurement andconstitute the measured accelerometer vector averaged over long enoughtime to reduce the statistical variance of accelerometer noise w to anacceptably small level. The target value of gravitational acceleration gis unity (1), for example, in an iterative process embodiment describedherein.

Notice that there are as many as nine (9) unknowns in the axes gainmatrix S and three (3) unknowns in the bias error vector μ. Solving forthese twelve (12) unknown quantities in some embodiments is performed insome embodiments by taking measurements (e.g., m>=12) at differentpostures and solving equation (11) in a recursive least squares sense,such as by using a microprocessor in system 1700 of FIG. 2 performinglinear minimum mean square estimation, gradient descent process, and/orother applicable data analysis process. More measurements can be takento improve the accuracy of measurements of the 12 unknowns. Embodimentsfor use with more than six unknowns are beneficial especially when theaccelerometer sensors are subject to relatively-relaxed specificationsfor mutual perpendicularity, or where the desired calibration is to bevery precise and the perpendicularity specification for accelerometersensors is less than the precision desired.

In some embodiments, for simplicity of analysis, the cross axes terms inmatrix S are ignored. When the cross axes terms are negligible, theabove assumption (ignoring the cross-axes terms) does not affectacceleration measurements significantly. In accordance with thedefinition, the matrix S is defined as a diagonal matrix with the axesgain terms:

$\begin{matrix}{S = \begin{bmatrix}{S\; {xx}} & 0 & 0 \\0 & {S\; {yy}} & 0 \\0 & 0 & {S\; {zz}}\end{bmatrix}} & (12)\end{matrix}$

In these embodiments, three (3) unknowns in the axes gain matrix S andthree (3) unknowns in the bias error vector μ make a total of six (6)unknowns. Solving for these six unknown quantities in some of theseembodiments is performed in some embodiments by taking measurements(e.g., m>=6) at different postures and solving equation (11) in arecursive least squares sense, such as by using a microprocessor insystem 1700 performing linear minimum mean square estimation (LMMSE),iterative error feedback, and/or a gradient descent process, and/orother applicable data analysis process. More measurements can be taken(m>6) to improve the accuracy of measurement of the six unknowns.

Define the diagonal matrix Y=S⁻¹

$\begin{matrix}{Y = \begin{bmatrix}{Y\; {xx}} & 0 & 0 \\0 & {Y\; {yy}} & 0 \\0 & 0 & {Y\; {zz}}\end{bmatrix}} & (13)\end{matrix}$

where

Yxx=1/Sxx

Yyy=1/Syy

Yzz=1/Szz  (14)

A number “m” of vector acceleration measurements f^(m)(k) indexed k ofare taken at different freely-established postures and a measured valueof the acceleration of gravity g(k) is computed using equation (15). Theorientation of each of the postures does not need to be known. Equation(11) is expressed as a square root of sum of squares for the kthmeasurement, and is given by equation (15).

g(k)=√(Y _(xx) ²(f _(x) ^(m)(k)=μ_(x))² +Y _(yy) ²(f _(y)^(m)(k)=μ_(y))² +Y _(zz) ²(f _(z) ^(m)(k)=μ_(z))²)  (15)

The measured acceleration of gravity g (k) for any given measurementwill likely be different from the known value unity (1.00) while the sixunknown parameters are being optimized by the procedure described next.

Define a parameter vector p holding the six unknowns (can beinitialization values or currently-unrefined values) in this processembodiment:

p=[Y_(xx)Y_(yy)Y_(zz)μ_(x)μ_(y)μ_(z)]^(T)  (16)

Here, parameter vector p does not need to be determined by equations (8)and (9) based on demandingly-precise test orientations. Instead,linearizing equation (15) by chain rule calculus differentiation, andexpressing equation (15) directly in terms of changes Δ of measuredquantities for an iterative process embodiment based on the gradient∇g(k) with respect to the unknown parameters p, gives:

Δg(k)=ΔYxx(Yxx(f _(x) ^(m)(k)−μ_(x))² /g(k))+ΔYyy(Yyy(f _(y)^(m)(k)−μ_(y))² /g(k))+ΔYzz(Yzz(f _(z) ^(m)(k)−μ_(z))² /g(k))−Δμ_(z)(Yxx²(f_(x) ^(m)(k)−μ_(x))/g(k))−Δμ_(y)(Yyy ²(f _(y)^(m)(k)−μ_(y))/g(k))−Δμ_(z)(Yzz ²(f _(z) ^(m)(k)−μ_(z))/g(k))  (17)

An equivalent linearized form for an iterative process embodiment thatsubstitutes equation (1A) to intermediately compute components of trueacceleration f^(a) for use in equation (17) is expressed as equation(17A):

Δg(k)=ΔYxxf _(z) ^(a)(k)²/(Yxxg(k))+ΔYyyf _(y) ^(a)(k)²/(Yyyg(k))+ΔYzzf_(a) ^(a)(k)²/(Yzzg(k))−Δμ_(z) Yxxf _(x) ^(a)(k)/g(k)−μ_(y) Yyyf _(y)^(a)(k)/g(k)−Δμ_(z) Yzzf _(z) ^(a)(k)/g(k)  (17A)

Rewriting either equation (17) or (17A) in matrix form provides arespective version of:

Δg=[∇^(T)g]Δp=HΔp  (18)

The matrix ∇^(T)g=H signifies a matrix having m rows, each row equal tothe transpose of column values of gradient of gravity with respect tothe parameters p for a respective kth one of the m measurementsf^(m)(k). Additionally writing with a 6×6 matrix product H^(T)H provides

H^(T)Δg=H^(T)HΔP  (18A)

where,

Δp=[ΔYxxΔYyyΔYzzΔμ_(x)Δμ_(y)Δμ_(z)]^(T)

Δg=[Δg(1) . . . Δg(k) . . . Δg(m)]^(T)

In (m×1) column vector Δg, each entry is given by equation (19):

Δg(k)=1−g(k)  (19)

and H is the relation matrix (m×6) related to the gradient of gravityand defined by equation (17). Solving equation (18A) yields

Δp=(H ^(T) H)⁻¹ H ^(T) Δg  (20)

In a first example, note that each k^(th) row of an (m×6) relationmatrix H is based on the sensor outputs f_(x) ^(m)(k) f_(y) ^(m)(k)f_(z) ^(m)(k) of the k^(th) measurement and equation (17) and has sixnumerical values that are numerically generated by an electronicprocessor programmed with these six expressions that use informationfrom equations (15) and (16):

$\begin{matrix}\begin{matrix}{{\nabla^{T}{g\left( {k,j} \right)}} = {H\left( {k,j} \right)}} \\{= \begin{bmatrix}{\left( {Y\; {{{xx}\left( {{f_{x}^{m}(k)} - \mu_{x}} \right)}^{2}/{g(k)}}} \right),\left( {Y\; {{{yy}\left( {{f_{y}^{m}(k)} - \mu_{y}} \right)}^{2}/{g(k)}}} \right),} \\{\left( {Y\; {{{zz}\left( {{f_{z}^{m}(k)} - \mu_{z}} \right)}^{2}/{g(k)}}} \right),{- \left( {Y\; {{{xx}^{2}\left( {{f_{x}^{m}(k)} - \mu_{x}} \right)}/{g(k)}}} \right)}, -} \\{\left( {Y\; {{{yy}^{2}\left( {{f_{y}^{m}(k)} - \mu_{y}} \right)}/{g(k)}}} \right),\left( {Y\; {{{zz}^{2}\left( {{f_{z}^{m}(k)} - \mu_{z}} \right)}/{g(k)}}} \right)}\end{bmatrix}}\end{matrix} & (21)\end{matrix}$

In a second example, note that each k^(th) row of (m×6) relation matrixH is based instead on equation (1A) applied to compute components oftrue acceleration f^(a) from the sensor outputs f_(x) ^(m)(k) f_(y)^(m)(k) f_(z) ^(m)(k) of the k^(th) measurement. Each k^(th) row ofrelation matrix H is based on equation (17A) and gets the same sixnumerical values as in the first example, but which are numericallygenerated by an electronic processor alternatively programmed with thesealternative six expressions that use information from equations (1A),(15) and (16):

[f_(z) ^(a)(k)²(Yxxg(k)),f_(y) ^(a)(k)²/Yyyg(k),f_(z)^(a)(k)²/(Yaag(k)−Yxxf_(z) ^(a)(k),−Yyyf_(y) ^(a)(k)/g(k),Yzzf_(z)^(a)(k)/g(k)]  (21A)

The iterative process is programmed and stored, e.g., in flash memory1025 (1720.1) for execution on a floating-point or fixed point processorin system 1700 of FIG. 2. It should be apparent to the reader that anyof various iterative processes and sets of processor instructions toaccomplish each of them are suitably provided and applied by the skilledworker in practicing various embodiments according to the teachingsherein.

The various parameters initialization for equation (16) is shown inTABLE 1. The final estimates of bias errors μ_(x), μ_(y), μ_(z) and axesgain reciprocals Yxx, Yyy, Yzz are obtained through multiple iterations.The steps for each iteration are as follows and are further described inconnection with FIGS. 6A and 6B (or in FIG. 6C more general form forthis and various other embodiments):

TABLE 1 PARAMETER INITIALIZATION Initial Parameters (p) Value μ_(x)μ_(y) μ_(z) 0, 0, 0 Yxx Yyy Yzz 1, 1, 1

Estimation Process I

1. Initialize parameters p according to TABLE 1.2. Keep the three axes accelerometer 1140 at any arbitrary posture, keepit stationary and measure the average acceleration on all three axes:[f_(x) ^(m) f_(y) ^(m) f_(z) ^(m)]^(T). Repeat the process “m” number oftimes with different postures 2535A, B, C every time to get “m” sets ofmeasurement vectors.3. Compute the measured value of g(k) using the current parameter valuesand equation (15) for each measurement k; k=1 to m4. Compute Δg(k)=1−g(k); k=1 to m (Difference between target value andmeasured value of gravity)5. Compute the gradient-related matrix H using equation (21) where thekth row of H is computed from the kth measurement set and the currentparameter values.6. Compute Δp using equation (20).7. Update the parameter values; p=p+Δp.

8. Compute new g and Δg for new p.

9. If ((Δg^(T)Δg)<Specified Threshold) Stop, else loopback to Step 5.

Note that the Specified Threshold for step (9) may also be expressed asthe product (mε) of the number of measurements m times a small specifiedamount epsilon ε defining a numerical bound within which the optimizingiterations are to be regarded as having sufficiently approached zerowhen the estimation process has converged.

In FIG. 6A, parameter estimation process 2800 operations commence withBEGIN 2810 and then a step 2820 initializes the parameter p values sothat the unknown bias errors μx, μy, μz are each initialized to zero,and the unknown axes gains Yxx, Yyy, Yzz are initialized to unity as inTABLE 1. If the accelerometer 1140 unit has been calibrated before, thensubsequently using earlier-computed accelerometer parameter values, suchas accelerometer parameter values that pertained under similarenvironmental conditions monitored by environmental sensor 1160, canreduce the number of iterations to convergence in FIGS. 6B and 6C andthereby save battery energy and reduce system latency.

Also, step 2820 establishes a configured number m of measurements andinitializes measurement index k to one (1) to represent that a firstmeasurement will be taken. A succeeding step 2830 prompts the user viacontrol signals to prompt transducers 1180 to reorient the platform(e.g., cell phone handset 2010 with an accelerometer 1140) in any one ormore of directions 2535A, B, C and put the platform in a new stationaryarbitrary posture. Accelerometer 1140 has sensors for each of threesubstantially mutually perpendicular axes. An input step 2850 measuresthe average acceleration vector components f_(x) ^(m)(k), f_(y) ^(m)(k),and f_(z) ^(m)(k) from accelerometer 1140 at the currently establishedstationary arbitrary posture for measurement k as discussed inconnection with FIG. 5. A calibration confirmation control signal totransducers 1180 such as a double-flash and double-beep indicates theuser that the measurement is successful.

In some embodiments a decision step 2855 screens that latest measurementk2 to determine whether it is an essential duplicate of a previousmeasurement k1, such as by checking whether the sum of squareddifferences between the 3-element measurement vectors|(f^(m)(k2)−f^(m)(k1))|² is less than a predetermined small value.(Duplication might occur either by user inaction or inadvertently bysome re-orientations that, in effect, merely precess the accelerometer1140 around the vertical.) If six or fewer measurements have been takenso far, (Yes at step 2855) then operations branch to a step 2858 to dropthe latest measurement and prompt the user for more diverse positioning,whereupon operations go back through a point (D) to step 2830. Thishelps reduce the chances that the rank of the gradient-related matrixproduct H^(T)H will be less than the number of unknowns (e.g., 6), whichcan impede inversion of matrix product H^(T)H in equation (20).

In due course, sufficiently-diverse measurements f^(m)(k) are taken, andoperations proceed from decision step 2855 to a step 2860. Step 2860increments the measurement index k=k+1. Then decision step 2870determines whether all of a number m>=6 of desired measurements havebeen taken. If not, operations loop back to step 2830 to prompt the userto put the platform in another new stationary arbitrary posture, and theloop 2830-2870 is repeated until all m measurements have been taken.When k>m, (Yes at step 2870), operations proceed through point A of FIG.6A to FIG. 6B, or in some embodiments, to FIG. 6C instead.

In FIG. 6B, operations continue from point A to a step 2910 wherein themeasurement index is again initialized to one (1). A succeeding step2920 computes a gravity value g(k) using square root of sum of squaresequation (15) with the six-parameter vector in Equation (16) initializedto p=[1 1 1 0 0 0]^(T) or a current parameter vector p, if available.Equation (20) is then computed and further uses the acceleration vectorcomponents f_(x) ^(m)(k) f_(y) ^(m)(k), and f_(z) ^(m)(k) for k=1.

Further in FIG. 6B, a processor step 2930 uses equation (19) andcomputes a difference 1−g(k) between known unity gravitationalacceleration and the computed gravity value g(k) from step 2920. Then aprocessor step 2940 generates a gradient ∇^(T)g(k,j), i.e. a kth set ofsix row values for the kth row of (m×6) relation matrix H according tothe row formulas in expression (21) or in expression (21A) for instance.The gradient-related relation matrix H is implemented as a table inmemory 1024 (1720.3 or 1750) that is populated by the process of FIG. 6Bwith numerical values. A numerical value is generated by the processorfor the memory entry corresponding to each row k, column j of therelation matrix H. The processor populates row k using the currentparameter vector p and the average acceleration vector components f_(x)^(m)(k), f_(y) ^(m)(k), and f_(z) ^(m)(k) and the computed gravity valueg(k), all for measurement k. For instance, the memory entrycorresponding to row k, column one is computed by the processorprogrammed according to the formula H(k, 1)=(Yxx (f_(x)^(m)(k)−μ)_(x))²/g(k)), and so forth over to row k, column 6, which usesfurther computer instructions that when executed do an electronicprocess that represents and implements the formula H(k, 6)=−(Yzz²(f_(z)^(m)(k)−μ_(z))/g(k)).

At completion of step 2940 in FIG. 6B, matrix row k is populated, andthe measurement index is incremented so k=k+1 at a step 2945. Then adecision step 2950 determines whether the entire table in memorycorresponding to gradient-related matrix H is populated by testingwhether index k exceeds the total number of measurements m. If not,operations loop back from step 2950 to step 2920. This inner loop2920-2950 is executed until k>m, whereupon operations proceed to a step2960. Step 2960 performs an outer loop kernel that collectivelyprocesses all the m measurements and updates the six-dimensionalparameters estimate p using earlier-described equation (20) and addingto yield:

p=p+Δp=p+(H ^(T) H)⁻¹ H ^(T) Δg  (22)

Associated with step 2960, a test 2965 is provided (such as determiningwhether the determinant of matrix product H^(T)H is less than apredetermined small values for the purpose of invertibility testing) todetermine whether matrix product H^(T)H is invertible, i.e., whether itsrank is at least equal to the number of unknowns (e.g., 6). If thedeterminant is very small or zero at step 2965, operations branch to astep 2968 to prepare to take another measurement by setting k=m+1 andm=m+1 and cueing the user. After step 2968, operations go back to point(D) and step 2830 of FIG. 6A. Because of entry screening step 2855, step2965 is likely to be passed (No at step 2965), and operations proceed tostep 2970.

The outer loop has a decision step 2970 that computes a convergencemetric and compares it with a threshold to determine whether the outerloop is converged. One example of such convergence test involves the sumof squares of computed gravity differences Δg:

Δg^(T)Δg<mε  (23)

Inequality (23) expresses the convergence criterion that the parametersp should be such that the sum of squares of computed gravity differencesrelative to unity over all the m measurements should be small (i.e.,less than some small configuration value established for the purpose ofconvergence testing) so that all or almost all the measurements do agood job of measuring the gravitational acceleration components. Analternate method of convergence for all methods is to use(Δp^(T)Δp<ε_(p)), i.e. less than a specified convergence value epsilon.

If decision step 2970 detects that the outer loop is not converged (No),then operations loop back to step 2910 and perform another iterationbased on the updated parameters p. When the outer loop is converged(Yes) at step 2970, operations proceed to a step 2980 that outputsrecalibrated accelerometer parameters p whence RETURN 2995 is reachedand the recalibrated accelerometer parameters p are stored in a memoryrecord along with associated environmental sensor 1160 measurements andare used in navigation applications thereafter.

An experiment was carried out with 12 bit accelerometer KXR94 fromKionix Inc. The accelerometer bias errors and axes gain were initiallyestimated by obtaining the averaged outputs of the accelerometer in sixdifferent precise orientations or postures as discussed in connectionwith equations (8) and (9). The individual readings (for eachorientation) and the computed estimates of parameters using thisdemanding six-posture method are shown in TABLE 2.

Next, according to the more user-convenient process embodiment I, theaccelerometer was placed on 14 different and arbitrary postures and theaveraged output on each posture at rest was obtained. The individualreadings (for each orientation) and the computed estimates of parametersp are shown in TABLE 3 for the more convenient approach of embodiment Itaught herein. The convenient approach of embodiment I is user friendlyand does not depend on any specific orientation during calibration ofaccelerometers. A total of six readings at any different orientations issufficient to obtain a solution for the axes gain and bias errors,however more observations help to refine the estimates. A set ofobservations drawn from various orientations (spanning 4π steradians ofa sphere) is likely to provide better accuracy of estimates.

TABLE 2 ESTIMATION OF BIAS ERRORS AND AXES GAIN (DEMANDING SIX-POSTUREMETHOD) Accelerometer Measurements Orientation X-axis Y-axis Z-axisx-axis towards gravity 1.172684 0.049973 −0.07548 x-axis against gravity−1.24361 0.073605 −0.09897 y-axis towards gravity −0.01779 1.266058−0.08268 y-axis against gravity −0.03391 −1.14064 −0.12097 z-axistowards gravity −0.02251 0.052657 0.879216 z-axis against gravity−0.02764 0.074148 −1.07293 Results of Demanding Six-Posture MethodEstimated Bias errors −0.0288 0.062634 −0.0953 Estimated Axes gain1.208149 1.203347 0.976074

TABLE 3 ESTIMATION OF BIAS ERRORS AND AXES GAIN (PROCESS I)Accelerometer Measurements Orientation X-axis Y-axis Z-axis Horizontal−0.02251 0.052657 0.879216 Upside Down −0.02764 0.074148 −1.07293  30°Pitch 0.551517 0.053191 0.755749  60° Pitch 0.99879 0.0517 0.406065  90°Pitch 1.172684 0.049973 −0.07548 −30° Pitch −0.64078 0.065662 0.742544−60° Pitch −1.08329 0.07364 0.384561 −90° Pitch −1.24361 0.073605−0.09897  30° Roll −0.02992 0.643543 0.75876  60° Roll −0.02621 1.0997250.407088  90° Roll −0.01779 1.266058 −0.08268 −30° Roll −0.03625−0.55319 0.737029 −60° Roll −0.03995 −0.98712 0.373648 −90° Roll−0.03391 −1.14064 −0.12097 Results of Estimation Process I EstimatedBias errors −0.0343 0.0655 −0.0977 Estimated Axes gain 1.207438 1.2040940.975515

The estimates of bias errors and axes gain obtained from the demandingsix-posture approach of TABLE 2 and the process embodiment I in TABLE 3were applied to the various measurements at different orientations. Theresultant value of gravity vector was computed after applying the biasand scale corrections to the various observations on all three axes. Theresult is tabulated in TABLE 4 and shows the percentage errors as themagnitude of the difference between unity gravitational acceleration andcomputed gravitational acceleration based on the measurements.

TABLE 4 MEASUREMENT ERROR MAGNITUDE (%) BASED ON BIAS ERROR AND AXESGAIN ESTIMATES % error of measured value % error of of Gravity -Demanding measured value of Orientation Six-Posture Method Gravity -Process I Horizontal 0.155% 0.154% Upside Down 0.164% 0.025%  30° Pitch0.450% 0.045%  60° Pitch 0.634% 0.057%  90° Pitch 0.525% 0.003% −30°Pitch 0.330% 0.291% −60° Pitch 0.179% 0.039% −90° Pitch 0.557% 0.158% 30° Roll 0.067% 0.064%  60° Roll 0.384% 0.278%  90° Roll 0.019% 0.272%−30° Roll 0.547% 0.190% −60° Roll 0.404% 0.114% −90° Roll 0.029% 0.198%Average (% error) 0.317% 0.135%

The results in TABLE 4 show a lower average error magnitude for ProcessI, with an upper bound of less than 0.3%. The error is higher for thedemanding six-posture approach of TABLE 2 since it is difficult toaccurately orient the accelerometers in the required six predeterminedpostures. Not only does Process I accurately measure the magnitude ofgravity, but also it accurately measures the X, Y, Z vector componentsof the gravitational acceleration, as indicated by the closecorrespondence of the respective values determined for Estimated Biaserrors in TABLES 3 and 2 and the close correspondence of the valuesdetermined for Estimated Axes gain in TABLES 3 and 2. The work presentsa simple procedure to the user to measure bias and axes gain by processI and TABLE 3. It does not put any restriction on orientation and wouldbenefit even ordinary cell phone users to calibrate accelerometers 1140on the fly for portable device and vehicle navigation. The knowledge ofbias errors and axes gain can serve as good initial estimates for asubsequent Kalman filter states for calibrating INS with respect to GPSas in FIG. 9 described later herein below.

A separate use of Kalman filtering is taught next herein for analternative process embodiment 1K wherein the accelerometer 1140calibration itself is achieved for process I above using Kalmanfiltering instead. The Kalman embodiment for Method IK goes as follows:

Step 1K-1. Parameters to be estimated: p=[Yxx, Yyy, Yzz, μ_(x), μ_(y),μ_(z)]. Use a starting a priori estimate of the parameters: p⁻=[1 1 1 00 0], where the values represent the starting values of the parametersdefined in vectorp.

Step 1K-2. Establish an initial uncertainty covariance matrix P⁻ thatdescribes the initial covariance of the uncertainties in parameters. P⁻(i,j)=E ((q_(i)−p⁻ _(i))(q_(j)−p⁻j)) where “E( )” signifies expectationand where {q_(i), q_(j)} are the unknown actual values of parameters p⁻_(i), p⁻ _(j). For example, set the a priori estimate of the covariancematrix according to a specification of the accelerometer 1140 bias errorrange and gain error range. Covariance matrix P⁻ is square and symmetricin general, and has dimensions (6×6) in an example with six parametersas here.

The Kalman filter process for the above estimation problem is dividedinto a Time Update and a Measurement Model:

Step 1K-3. In the Time Update the parameters p are propagated from onetime instant t to a next time instant t+1, i.e. p^(t+1)=p^(t). In thisexample, iterations are used as a proxy for time.

Step 1K-4.1. The Measurement Model first determines the value of gravityfunction g based on a priori estimates of p(=p⁻) and references it tounity (normalized value of gravity) e.g., as in Equation (15). Actualgravity magnitude unity is equal to the sum of gravity function plusmeasurement noise as expressed by: 1=g(f_(x) ^(k), f_(y) ^(k), f_(z)^(k), p⁻)+w. Gravity g and noise w are bolded as column vectors indexedon the measurements k.

Step 1K-4.2. The values entered in measurement noise w fromaccelerometers 1140 are assumed to arise from a zero mean white Gaussianprocess. Establish a (m×m) matrix W as the covariance matrix for (m×1)measurement noise w.

W(i,j)=E(w _(i) *w _(j))

It may be noted that for white Gaussian process,

W(i,j)=σ_(i) ²

W(i,j)=0; i≠j

Δg(k)=1−g(f_(x) ^(k), f_(y) ^(k)f_(z) ^(k), p⁻) is defined as theresidue of the measurements k.

Step 1K-5. Compute values for a matrix H where H is the Jacobian (agradient-based matrix) of the function g with respect to the parametersp, i.e., H (k, j)=δg(k)δp (j) is the Jacobian or gradient of the k_(th)measurement with respect to the j^(th) parameter. Matrix H is (m×6) andsame as equation (21) hereinabove, for example.

Step 1K-6. Compute the Kalman Gain as follows:

K=P ⁻ H ^(T)(HP ⁻ H ^(T) +W)⁻¹

(6×m)=(6×6) (6×m)×[(m×6)(6×6)(6×m)+(m×m)] is the dimensional relation.

The Kalman Gain K represents a suitable weighting factor to themeasurement update based on the current state uncertainties andmeasurement uncertainties.

Step 1K-7.1. Update the parameters according to the equation:

p=p ⁻ +KΔg

i.e., (6×1)=(6×1)+(6×m)(m×1).

Step 1K-7.2. Update the estimates for the parameters p⁻ for the nextiteration using p⁻ _(k+1)=p_(k).

Step 1K-8.1. Update a matrix capital-P (P matrix) with the measurementas follows:

P=(I−KH)P ⁻.

i.e., (6×6)=((6×6)−(6×m)(m×6)) (6×6).

Step 1K-8.2. Update the estimates for the parameter covariance matrix P⁻for the next iteration using P⁻ _(k+1)=P_(k).

Step 1K-9.1. Generate the sum of squared residues (Δg^(T)Δg).

-   -   This sum is a scalar (1×m)(m×1)=(1×1).

Step 1K-9.2. Determine whether the sum of squared residues is less thana threshold value ε pre-established for purposes of convergence testing.If not less, loop back to Step 1K-4.1. The loop is continued until theestimation process converges, as indicated when the sum of squaredresidues (Δg^(T)Δg) is less than the pre-established threshold ε. Thenprocess goes to Step 1K-10.

Step 1K-10. Output the estimates for the parameters p for use in anavigation application. If a navigation application utilizes any otherestimates generated by the Kalman filter process, output those otherestimates as well. In some embodiments, measurements are time-windowedor grouped according to similar temperature, or both, according to ameasurement grouping process. In such cases, the procedure is executedagain when appropriate to do so given the type of measurement groupingprocess as new measurement data comes in over time.

Another, second, optimization process embodiment (II) for calibratingaccelerometers 1140 on-the-fly takes a number “m” measurements indexed kof the acceleration of gravity-square g²(k) at different postures. FIGS.6A and 6C depict process embodiment II, and the computational proceduresare varied in process embodiment II in some ways relative to processembodiment I detailed earlier hereinabove. The orientation of each ofthe postures does not need to be known. In general, the embodiment II iscomputationally more efficient, as it avoids functions like square-rootand some division operations and does converge. However, embodiment IImay result in inferior convergence of final parameter set compared toembodiment I.

Equation (11) is expressed as a sum of squares for the kth measurementwithout square root, and is given by equation (24).

g ²(k)=Yxx ²(f _(x) ^(m)(k)−μ_(x))² +Yyy ²(f _(y) ^(m)(k)−μ_(y))² +Yzz²(f _(z) ^(m)(k)−μ_(z))²  (24)

Until the calibration is completed, the measured square of theacceleration of gravity g²(k) for any given measurement k will likely besomewhat different from the known value unity (1.00) while the sixunknown parameters are being optimized by the procedure described next.

Define the parameter vector p holding the six unknowns (initializationvalues or current unrefined values) in this process embodiment:

p=[YxxYyyYzzμ_(x)μ_(y)μ_(z)]^(T)  (16)

Here, parameter vector p does not need to be determined by equations (8)and (9) based on demandingly-precise test orientations. Instead,equation (24) is linearized by chain rule calculus differentiation tobecome equation (25). Equation (25) is expressed directly in terms ofmeasured quantities multiplied by their differences Δp for an iterativeprocess embodiment free of division operations by g(k).

Δg ²(k)=2[ΔYxxYxx(f _(x) ^(m)(k)−μ_(x))² +ΔYyyYyy(f _(y) ^(m)(k)−μ_(y))²+ΔYzzYzz(f _(z) ^(m)(k)−μ_(z))²−Δμ_(x) Yxx ²(f _(z)^(m)(k)−μ_(x))−Δμ_(y) Yyy ²(f _(y) ^(m)(k)−μ_(y))−Δμ_(z) Yzz ²(f _(z)^(m)(k)−μ_(z))]  (25)

Notice that Δg²(k) signifies some amount of change in the measured valueof gravity-squared expressed as a linearized product of the differencevector expressing some amount of change in the six unknowns of parametervector p and multiplied times the six partial derivatives (gradient inequation (25)) of gravity-squared equation (24) as coefficients. Noticethat gravity squared g²(k) is treated as an entity per se and not asthough some gravity value itself were known as a pre-existing value tomultiply by itself to form such square. Moreover, at this point thedifference value Δg²(k) of the entity gravity-squared is not determinedin value, although its gradient-based linear relation is now establishedrelative to also-undetermined changes in the six unknowns of parametervector p.

An equivalent linearized form for an iterative process embodiment thatuses equation (1A) to intermediately compute components of trueaccelerations f^(a) for use in equation (17) is expressed as equation(17A):

Δg ²(k)=2[ΔYxxf _(x) ^(a)(k)² /Yxx+ΔYyyf _(y) ^(a)(k)² /Yyy+ΔYzzf _(z)^(a)(k)²/Yzz−Δμ_(x) Y _(xx) f _(x) ^(a)(k)−Δμ_(y) Yyyf _(y)^(a)(k)−Δμ_(z) Yzzf _(z) ^(a)(k)]  (25A)

Rewriting the linear relationship of either equation (25) or (25A) inmatrix form, with the symbolism Δg² understood as an (m×1) vector ofelements Δg²(k), provides equation (26):

Δg ²=2H ₂ Δp  (26)

Matrix H₂ is the gradient-based relation matrix (m×6) defined byequation (25) or (25A). The six partial derivatives in equation (25) ofgravity-squared equation (24) for any given measurement k arerespectively equal to twice the corresponding values in thecorresponding row k of matrix H₂.

Pre-multiplying both sides of equation (26) with a matrix transpose,i.e., (6×m) matrix H₂ ^(T), delivers equation (26A), which has a 6×6invertible square matrix product H₂ ^(T)H₂ on the right side of theequation (26A):

H₂ ^(T)Δg²=2H₂ ^(T)H₂Δp  (26A)

where,

Δp=[ΔYxxΔYyyΔYzzΔμ_(x)Δμ_(y)Δμ_(z)]^(T)

Δg ² =[Δg ²(1) . . . Δg ²(k) . . . Δg ²(m)]^(T)

Solving equation (26A) by computationally relatively-convenient (6×6)matrix inversion yields equation (27):

Δp=0.5(H ₂ ^(T) H ₂)⁻¹ H ₂ ^(T) Δg ²  (27)

The matrix inverse (H₂ ^(T)H₂)⁻¹ will generally not exist unless thenumber m of measurements equals or exceeds the number of unknowns (e.g.,6) in the parameter change vector Δp. In general, the matrix rank R ofthe matrix product H₂ ^(T)H₂ desirably equals or exceeds the number ofunknowns in the parameter change vector Δp so that the determinant ofthe matrix product H₂ ^(T)H₂ is non-zero and the matrix product H₂^(T)H₂ is invertible in process II.

Still remaining undetermined at this point are both linearly relatedvectors—the (m×1) column vector Δg² for the differenced entitygravity-squared and the vector Δp representing changes in the sixunknowns of parameter vector p. Their inverted linear relation is nowestablished according to equation (27). To determine Δg², it is heremade to be a negative feedback quantity established as a function ofeach squared gravity measurement in the iterative process relative toits target value of unity (square of unity is unity). The difference ofthe entity gravity-squared relative to target value unity (1.00) ofgravitational acceleration is g²(k)−1. A positive iteration constant cis applied, and negative feedback is signified by a leading minus-sign(−), as in equation (28):

Δg ² =−c(g ²(k))=c(1−g ²(k))

Equation (28) is substituted into equation (27) to yield equation (29):

Δp=0.5c(H ₂ ^(T) H ₂)⁻¹ H ₂ ^(T)[1−g ²(k)]  (29)

Equation (29) determines Δp, in terms of iteration constant c, theinverted linear relation 0.5(H₂ ^(T)H₂)⁻¹H₂ ^(T), and an (m×1) columnvector [1−g² (k)]. Column vector [1−g²(k)] represented algebraically hasm elements wherein each kth element is generated by a processor insystem 1700 subtracting the kth measurement of gravity-squared g²(k)from unity (1). Equation (29) supports each negative-feedback-driveniteration in an iterative estimation process for updating unknownparameter vector p. If there are fewer measurements m than the number ofunknowns (e.g., 6) and more measurements cannot be available or will notbe available, then equation (29) can be replaced with equation (39A)described later hereinbelow.

In concept, the iteration constant c approximately represents aproportion of the distance vector from a given point inmulti-dimensional mathematical space (e.g. 6-space) to the target pointin that space. The iteration constant c suitably is predetermined tohave some value in a range 0<c<2. Choosing a value of iteration constantc that is greater than zero and less than or equal to one generallydefines motion in the multidimensional space progressively in thedirection of the target without overshooting the target. Choosing avalue of iteration constant c that is more than one (1.0) and less thantwo (2.0) generally defines motion in the multidimensional space thatovershoots the target but can ultimately converge on the target bysuccessive hunting that backtracks and overshoots decreasingly. Choosinga value of iteration constant c in the narrower range 0.8<c<1.2 islikely to produce convergence of the estimation process in feweriterations than choosing a value outside that narrower range. A nominalvalue for iteration constant c is one (1.0) for rapid convergence,although some development trial and error in choosing a value foriteration constant c may show that some reduction in the number ofiterations (and consequent computer time and energy) can be obtained bydeparting from c=1.0 somewhat. In the electronic processing, onesuitably combines the product 0.5 c into one pre-stored constant valuec′=0.5c for processing, and the corresponding ranges are wide range0<c′<1, narrower range 0.4<c<0.6, and a nominal value c′=0.5 in processembodiment II. By contrast, in process embodiment I earlier hereinabovethe factor 0.5 of process embodiment II is not present and an iterationfactor c is suitably provided in equation (20) in process embodiment Iin some versions.

Description now returns to give some more detail about the content of(m×6) relation matrix H₂. In a first example, note that each kth row ofan (m×6) relation matrix H₂ is based on the sensor outputs f_(x) ^(m)(k)f_(y) ^(m)(k) f_(z) ^(m)(k) of the kth measurement and equation (25).Each kth row of matrix H₂ has six numerical values that are numericallygenerated by an electronic processor programmed with these sixexpressions that use information from equations (25) and (16):

[Yxx(f_(x) ^(m)(k)−μ_(x))²,Yyy(f_(y) ^(m)(k)−μ_(y))²,Yzz(f_(z)^(m)(k)−μ_(z))²,−Yxx²(f_(x) ^(m)(k)−μ_(x)),−Yyy²(f_(y)^(m)(k)−μ_(y))−Yzz²(f_(z) ^(m)(k)−μ_(z))]  (30)

In a second example, note that each kth row of (m×6) relation matrix H₂is based instead on equation (1A) applied to compute components of trueacceleration f^(a) from the sensor outputs f_(x) ^(m)(k) f_(y) ^(m)(k)f_(z) ^(m)(k) of the kth measurement. Each kth row of relation matrix H₂is based on equation (25A) and gets the same six numerical values as inthe first example, but which are numerically generated by an electronicprocessor alternatively programmed with these alternative sixexpressions that use information from equations (25A) and (16):

[f_(x) ^(a)(k)²/Yxx,f_(y) ^(a)(k)²/Yyy,f_(x) ^(a)(k)²/Yzz,−Yxxf_(x)^(a)(k),−Yyyf_(y) ^(a)(k),−Yzzf_(z) ^(a)(k)]  (30A)

An iterative estimation process embodiment such as one includingequations (24)-(29) is programmed for execution on a floating-point orfixed point processor such as in system 1700. Different embodiments aresuitably considered by the skilled worker in regard to expected numberof iterations involved for convergence of the estimation process, numberof clock cycles per iteration, acceptably small processor roundofferrors, processor power and energy dissipation, operability on lessexpensive fixed point processors with shorter register length, etc.Various iterative processes and sets of processor instructions toaccomplish each of them are suitably provided and applied by the skilledworker in practicing various embodiments according to the teachingsherein.

For gravity-squared process embodiment II, the various parametersinitialization is shown in TABLE 1, same as in process embodiment I. Thefinal estimates of bias errors μx, μy, μz and axes gain reciprocals Yxx,Yyy, Yzz are obtained through multiple iterations. The steps for eachiteration are as follows and are further described in connection withFIGS. 6A and 6C:

Estimation Process II

1. Initialize parameters p according to TABLE 1.2. Keep the three axes accelerometer 1140 at any arbitrary posture, keepit stationary and measure the average acceleration on all three axes:[f_(x) ^(m) f_(y) ^(m) f_(z) ^(m)]^(T). Repeat the process “m” number oftimes with different postures every time to get “m” sets of measurementvectors.3. Compute the measured value of g²(k) using the current parametervalues and equation (24) for each measurement k; k=1 to m4. Compute 1−g²(k); k=1 to m

(Difference Between Target Value and Measured Value)

5. Compute the matrix H₂ using equation (30) where the kth row of H₂ iscomputed from the kth measurement set and the current parameter values(equation (16)).6. Compute Δp using equation (29).7. Update the parameter values; p=p+Δp.8. Compute g²(k) using current parameter values.9. Compute and test a convergence criterion, such as

${{CC}\; 1} = {{\sum\limits_{k = 1}^{m}\left( {1 - {g^{2}(k)}} \right)^{2}} < {m\; ɛ_{2}}}$

or use CC2=Δp^(T)Δp<ε₃ instead as described herein below. If convergencecriterion CC is less than Specified Threshold then stop, else loopbackto Step 4.

Determining that convergence criterion

${{CC}\; 1} = {{\Delta \; g^{2T}\Delta \; g^{2}} = {\sum\limits_{k = 1}^{m}\left( {1 - {g^{2}(k)}} \right)^{2}}}$

less than Specified Threshold (CC1<m ε₂) is a reasonable formula sinceall the measurements g²(k) are similar in concept to one another. Notethat the Specified Threshold CC1 for step (8) is expressed for processembodiment II as the product (mε₂) of the number of measurements m timesa small specified amount epsilon ε₂ defining a numerical bound withinwhich the optimizing iterations are to be regarded as havingsufficiently approached zero when the estimation process has converged.

An alternative convergence criterion for step (8) is given byCC2=Δp^(T)Δp<ε₃ as Specified Threshold. In other words when the updatesto the parameter vector become computationally insignificant, then theiterations are regarded as having converged in an embodiment versionthat uses convergence criterion CC2. The several elements of parametervector p differ in their concept as gain parameters and bias parameters,so a small Specified Threshold amount ε₃ is specified and used.

The description of FIG. 6A hereinabove applies similarly to processembodiment II. In FIG. 6C, operations continue from point A of FIGS. 6Aand 6C to a step 3110 wherein the measurement index k is initialized toone (1). A succeeding step 3120 computes a first function ofgravitational acceleration such as g(k) itself of Process I equation(15), or gravity-squared value g²(k) of Process II using sum of squaresequation (24), or some other function. The six-component parametervector in Equation (16), or a twelve-component parameter vector, or someother parameter vector, is used. For example, the six-componentparameter vector in equation (16) is initialized, e.g., to p=[1 1 1 0 00]^(T) or a set of parameter values resulting from recentre-calibration. The function of gravitational acceleration is computedbased on the current values in the parameter vector and the averageacceleration measurement vector components f_(x) ^(m)(k), f_(y) ^(m)(k),and f_(z) ^(m)(k) for k=1 from the accelerometer sensors X, Y, Z.

Further in FIG. 6C, a processor step 3130 computes a second function ofthe gravitational acceleration related to an error feedback based on thesecond function. An example of such a second function is a difference1−g²(k) between known unity (1.00) squared-gravitational accelerationand the computed gravity-squared value g²(k) from step 3120. Then aprocessor step 3140 generates a set of values related to the gradient ofthe first function. One example of such a set of values is a kth set ofsix row values for the kth row of (m×6) relation matrix H₂ according tothe row formulas in expression (30) or in expression (30A). In words,relation matrix H₂ is a table in memory that is populated by the processembodiment II with numerical values. A numerical value is generated bythe processor for the memory entry corresponding to each row k, column jof the relation matrix H₂. The processor populates row k using thecurrent parameter vector p and the average acceleration vectorcomponents f_(x) ^(m)(k) f_(y) ^(m)(k) and f_(z) ^(m)(k), all formeasurement k. For instance, the memory entry corresponding to row k,column one is computed by the processor programmed according to theformula H(k, 1)=(Yxx (f_(x) ^(m)(k)−μ_(x))²), and so forth over to rowk, column 6, which follows the formula H(k, 6)=−(Yzz²(f_(z)^(m)(k)−μ_(z))). At this point in FIG. 6C, matrix H₂ row k is populated.Steps 3120, 3130, 3140 are repeated for as many new measurements as areavailable.

A succeeding step 3150 updates the parameters p based on the errorfeedback and the gradient-related values. This operation takes variousforms in process embodiments I, II, III and IV described herein.

In process embodiment II, for instance, step 3150 updates thesix-dimensional parameters estimate p based on equation (29):

p=p+Δp=p+0.5c(H ₂ ^(T) H ₂)⁻¹ H ₂ ^(T)[1−g ²(k)]  (31)

If the matrix product H₂ ^(T)H₂ is not invertible due to insufficientrank R<6, operations go to point (D) in FIG. 6A to cue the user and takeanother measurement. Operations likely go from step 3150 to step 3160.

The outer loop has a decision step 3160 that computes a convergencemetric, such as CC1 or CC2 hereinabove, and compares it with a thresholdto determine whether the outer loop is converged. For instance,convergence test CC1 involves the sum of squares of computed differencesfor gravity-squared:

$\begin{matrix}{{{CC}\; 1} = {{\sum\limits_{k = 1}^{m}\left( {1 - {g^{2}(k)}} \right)^{2}} < {m\; ɛ_{2}}}} & (32)\end{matrix}$

Inequality (32) expresses the convergence criterion that the parametersp should be such that the sum of squares of differences of computedgravity-squared relative to unity over all the m measurements should besmall so that all or almost all the measurements do a good job ofmeasuring the gravitational acceleration components. The convergencetest expressed in another way determines a mean of the squares of thedepartures of g²(k) from unity according to inequality (32A):

$\begin{matrix}{{{CC}\; 1A} = {{\sum\limits_{k = 1}^{m}{\left( {1 - {g^{2}(k)}} \right)^{2}/m}} < ɛ_{2}}} & \left( {32A} \right)\end{matrix}$

If decision step 3160 detects that the outer loop is not converged (No),as indicated by the convergence test not being met, then operations loopback to step 3120 and perform another iteration based on the latestupdated parameters p. When the outer loop is converged (Yes) at step3160, operations proceed to a step 3170 that outputs recalibratedaccelerometer 1140 parameters p and uses them in a navigationapplication in system operations whence RETURN 3180 is reached. Itshould be emphasized that the run-time navigation application isexecuted in general in the presence of varying accelerations that departfrom the acceleration of gravity itself, which is desirable andsatisfactory. The accelerometer 1140 desirably measures the accelerationas the acceleration actually varies over time for purposes of supportingthe run-time navigation application. The measurements of accelerationfor the navigation application are rendered more accurate because of thepreviously-performed recalibration of the accelerometer parameters inthe presence of gravity acceleration itself. In general, the embodimentII is computationally more efficient, as it avoids functions likesquare-root etc. However, the convergence from embodiment II is expectedto be inferior from embodiment I.

Description next turns to a third optimization process embodiment (III)for calibrating accelerometers on-the-fly, which applies measurementmatrices for a gradient and a matrix of second partial derivatives toform a parameter change vector Δp for updating parameter estimate p.

An optimization function

based on the gravity equation has a minimum in 6-dimensional space dueto the mathematical form of the optimization function

and the gravity equation. FIGS. 6A/6C depict process embodiment III atthe level of the flow illustration, and the computational procedures arevaried in process embodiment III in some ways in a first process formIII-A relative to process embodiment II and in a second process formIII-B relative to process embodiment I detailed hereinabove. Theorientation of each of the postures does not need to be known.

Equation (24) is repeated for clarity here.

g ²(k)=Yxx ²(f _(z) ^(m)(k)−μ_(x))² +Yyy ²(f _(y) ^(m)(k)−μ_(y))² +Yzz²(f _(z) ^(m)(k)−μ_(z))²  (24)

The measured square of the acceleration of gravity g²(k) for any givenmeasurement k is computed for FIG. 6C step 3120 and will likely bedifferent from the known value unity (1.00) while the six unknownparameters are being optimized by the procedure described next.Accordingly process embodiment III establishes an optimization function

$\begin{matrix}{{= {\sum\limits_{k = 1}^{m}{F(k)}}},{{{where}\mspace{14mu} {F(k)}} = \left( {{g^{2}(k)} - 1} \right)^{2}}} & (33)\end{matrix}$

that has its minimum when the parameters are such that applying equation(24) to the measurement set produces gravity-squared values very near orat the desired value unity, i.e., when g²(k)˜=1. The optimizationfunction summand F(k) is a function of the parameter vector p holdingthe six unknowns in this process embodiment III, and equation (16) isalso repeated for clarity:

p=[YxxYyyYzzμ_(x)μ_(y)μ_(z)]^(T)  (16)

Here again, parameter vector p does not need to be determined byequations (8) and (9) based on demandingly-precise test orientations.Instead, in process embodiment III, a gradient descent or Newton-Raphsonprocess is included. Conceptually, note that the matrix H^(T)multiplication equation (18A) for process I and H₂ ^(T) equation (26A)for process II each represent a summation relationship between thenumerous m measurements data and one parameter vector update estimateΔp. In process embodiment III, the approach posits that this oneparameter vector update estimate Δp should be such as to make thegradient vanish. That is, for the measurements collectively, thesummation of the gradients ∇F(k) should be canceled out by the matrixproduct of the summation of the matrices M(k) of second partialderivatives with respect to the parameters of the optimization summandfunction F(k), matrix multiplied by this one parameter vector updateestimate Δp:

$\begin{matrix}{{{\nabla + {{\nabla\nabla} \star {\Delta \; p}}} = 0},{or}} & (34.1) \\{{{\sum\limits_{k = 1}^{m}{\nabla{F(k)}}} + {\sum\limits_{k = 1}^{m}\left( {{M(k)}\Delta \; p} \right)}} = 0} & (34.2)\end{matrix}$

Because Δp does not depend on measurement index k, equation (34.2) isalso expressed as follows:

$\begin{matrix}{{{\sum\limits_{k = 1}^{m}{\nabla{F(k)}}} + {\left( {\sum\limits_{k = 1}^{m}{M(k)}} \right)\Delta \; p}} = 0} & (34.3)\end{matrix}$

Next, solve for Δp:

$\begin{matrix}{{\Delta \; p} = {{- \left( {\sum\limits_{k = 1}^{m}{M(k)}} \right)^{- 1}}{\sum\limits_{k = 1}^{m}{\nabla{F(k)}}}}} & (34.4)\end{matrix}$

For the electronic computations, the process III-A operates usingequation (39) later below, evolved from equation (34.4) for theiteration(s). Execute process III-A in the same iterative manner asprocess II earlier herein above. The gradient ∇F(k) for process III-A isa column vector of first partial derivatives of optimization functionF(k) and is given for the kth measurement by partial differentiatingequation (33) to obtain equation (35). A convenient approach to set upthe equation (35) partial-differentiates by the chain rule—derivative ofF(k) in equation (33) with respect to g² itself (not g) multiplied timesgradient of g² itself using g² equation (24) with respect to theparameters p:

∇F(k)=−4H ₂ ^(T)(k)(1−g ²(k))  (35)

Notice that the factor (1−g²(k)) is a scalar in equation (35) and arisesin differentiating squared difference represented by optimizationfunction F(k). Scalar factor (1−g²(k)) relates to error feedback step3130. Column vector H₂T(k) arises from the calculus chain rule thatfurther proceeds to calculus-differentiate g²(k) of equations (35) and(24). The factor “4” (2×2) arises because the chain rule encounters anddifferentiates two squares in succession. Column vector H₂T(k) is thetranspose of the kth row of the relation matrix H₂ already given inexpression (30) and repeated here for clarity:

[Yxx(f_(x) ^(m)(k)−μ_(x))²,Yyy(f_(y) ^(m)(k)−μ_(y))²,Yzz(f_(z)^(m)(k)−μ_(z))²,−Yxx²(f_(x) ^(m)(k)−μ_(x)),−Yyy²(f_(y)^(m)(k)−μ_(y)),−Yzz²(f_(z) ^(m)(k)−μ_(z))]  (30)

The matrix M(k) of second partial derivatives of the optimizationfunction F(k) is derived by partial differentiation of equation (35)gradient ∇F(k) of the optimization function. To obtain matrix M(k) ofsecond partial derivatives, it is convenient to write down by inspectionof equations (24) and (21):

∇g ²(k)/2=H ₂ ^(T)(k)=gH ^(T)(k)=g(k)∇g(k)  (36)

The matrix M(k) of second partial derivatives of F(k) that results isgiven by equation (37):

M(k)=8∇g ²(k)/2∇g ²(k)/2^(T)−4[∇² g ²(k)/2](1−g ²(k))  (37)

In the first term of equation (37), a matrix ∇g²(k)/2∇g²(k)/2^(T) isformed by pre-multiplying the row expressed by (30), by its owntranspose. The double-del symbolism in the second term of equation (37)represents the following matrix in equation (38):

$\begin{matrix}\begin{matrix}{\left\lbrack {{\nabla^{2}{g^{2}(k)}}/2} \right\rbrack = \left\lbrack {\nabla{H_{2}^{T}(k)}} \right\rbrack} \\{= \begin{bmatrix}{\left( {{f_{x}^{m}(k)} - \mu_{x}} \right)^{2},} & {0,} & {0,} & {{{- 2}Y\; {{xx}\left( {{f_{x}^{m}(k)} - \mu_{x}} \right)}},} & {0,} & 0\end{bmatrix}} \\{\begin{bmatrix}{0,} & {\left( {{f_{y}^{m}(k)} - \mu_{y}} \right)^{2},} & {0,} & {0,} & {{{- 2}Y\; {{yy}\left( {{f_{x}^{m}(k)} - \mu_{x}} \right)}},} & 0\end{bmatrix}} \\{\begin{bmatrix}{0,} & {0,} & {\left( {{f_{z}^{m}(k)} - \mu_{z}} \right)^{2},} & {0,} & {0,} & {{- 2}Y\; {{zz}\left( {{f_{z}^{m}(k)} - \mu_{z}} \right)}}\end{bmatrix}} \\{\begin{bmatrix}{{{- 2}Y\; {{xx}\left( {{f_{x}^{m}(k)} - \mu_{x}} \right)}},} & {0,} & {0,} & {{Y\; {xx}^{2}},} & {0,} & 0\end{bmatrix}} \\{\begin{bmatrix}{0,} & {{{- 2}Y\; {{yy}\left( {{f_{y}^{m}(k)} - \mu_{y}} \right)}},} & {0,} & {0,} & {{Y\; {yy}^{2}},} & 0\end{bmatrix}} \\{\begin{bmatrix}{0,} & {0,} & {{{- 2}Y\; {{zz}\left( {{f_{z}^{m}(k)} - \mu_{z}} \right)}},} & {0,} & {0,} & {Y\; {zz}^{2}}\end{bmatrix}}\end{matrix} & (38)\end{matrix}$

Now combine equations (34.4), (35), (36), (37) and insert an iterationconstant c (e.g., 1.0 or in any range discussed earlier hereinabove) toyield equation (39):

$\begin{matrix}{{\Delta \; p} = {0.5{c\left( {{H_{2}^{T}H_{2}} - {0.5{\sum\limits_{k = 1}^{m}\left( {\left\lbrack {\nabla{H_{2}^{T}(k)}} \right\rbrack \left( {1 - {g^{2}(k)}} \right)} \right)}}} \right)}^{- 1}H_{2}^{T}\Delta \; g^{2}}} & (39)\end{matrix}$

Equation (39) can be compared with process embodiment II equation (27).Notice that the matrix H₂ ^(T)H₂ of equation (27) to be inverted isadjusted in equation (39) by the adjustment term based on summation overmeasurements of the moderately-sparse matrix of equation (38) timesΔg²(k):

${- 0.5}{\sum\limits_{k = 1}^{m}{\left( {\left\lbrack {\nabla{H_{2}^{T}(k)}} \right\rbrack \left( {1 - {g^{2}(k)}} \right)} \right).}}$

This adjustment term adds proportionately few computations and mayreduce the number of iterations needed to converge the loop tested bystep 3160.

The various parameters initialization is shown in TABLE 1 for initialcalibration. When calibration is being updated, initialization valuesinstead are suitably the most recent values for the calibratedparameters. The final estimates of bias errors μ_(x), μ_(y), μ_(t) andaxes gain reciprocals Yxx, Yyy, Yzz are obtained through multipleiterations, if needed, for each measurement and then averaging theparameter estimates. Using most recent calibrated parameters as astarting point, and/or using the adjustment term can reduce or eliminatemultiple iterations.

Description now turns to a process embodiment III-B that is related toprocess embodiment I. Equation (36) hereinabove relates the gradient ofthat function of gravity g that is gravity itself in process embodimentI to the gradient of the function g², i.e., of gravity-squared. Aprocess III-B variant of process embodiment I starts with anotheroptimization function

$\begin{matrix}{{{1} = {\sum\limits_{k = 1}^{m}{F\; 1(k)}}},{{{where}\mspace{14mu} F\; 1(k)} = \left( {{g(k)} - 1} \right)^{2}}} & \left( {33\text{-}I} \right)\end{matrix}$

and then is structured in a manner analogous to embodiment III-Aequations herein above, except with “I” suffixes to the equations, asfollows. Apply gradient descent or Newton-Raphson. Write thegradient-descent equation (34.4-I) and the gradient of F1(k) and adouble-del matrix M1(k), i.e. ∇∇F1(k) of second partial derivatives,paralleling the development from equations (34.4) through (39):

$\begin{matrix}{{{{{\nabla 1} + {{{\nabla\nabla}1} \star {\Delta \; p}}} = 0},{or}}{{\Delta \; p} = {{- \left( {\sum\limits_{k = 1}^{m}{M\; 1(k)}} \right)^{- 1}}{\sum\limits_{k = 1}^{m}{{\nabla F}\; 1(k)}}}}} & \left( {34.4\text{-}I} \right) \\{{{{\nabla F}\; 1(k)} = {{2\left( {{g(k)} - 1} \right){\nabla{g(k)}}} = {2{H_{2}^{T}(k)}{\left( {{g(k)} - 1} \right)/{g(k)}}}}}{{\nabla{\nabla F}}\; 1(k)} = {2\begin{Bmatrix}{{{H_{2}^{T}(k)}\left\lbrack {\nabla\left( {1 - {1/{g(k)}}} \right)} \right\rbrack} -} \\{\left( {\left\lbrack {\nabla{H_{2}^{T}(k)}} \right\rbrack/{g(k)}} \right)\left( {1 - {g(k)}} \right)}\end{Bmatrix}}} & \left( {35\text{-}I} \right) \\{\mspace{101mu} {= {2\begin{Bmatrix}{{{H^{T}(k)}{H(k)}\left( {1/{g(k)}} \right)} -} \\{\left( {\left\lbrack {\nabla{H_{2}^{T}(k)}} \right\rbrack/{g(k)}} \right)\left( {1 - {g(k)}} \right)}\end{Bmatrix}}}} & \left( {37\text{-}I} \right)\end{matrix}$

Note in obtaining equation (37-I) that

$\begin{matrix}{{{H_{2}^{T}(k)}\left\lbrack {\nabla\left( {1 - {1/{g(k)}}} \right)} \right\rbrack} = {{{H_{2}^{T}(k)}\left\lbrack {\nabla{g(k)}^{T}} \right\rbrack}/{g^{2}(k)}}} \\{{\left. {= {{H_{2}^{T}(k)}/{g(k)}}} \right)\left\lbrack {\nabla{g(k)}^{T}} \right\rbrack}\left( {1/{g(k)}} \right)} \\{= {{H^{T}(k)}{H(k)}{\left( {1/{g(k)}} \right).}}}\end{matrix}$

Equation (39-I) for Process Embodiment III-B can be compared withprocess embodiment 1 equation (20).

$\begin{matrix}{{\Delta \; p} = {{c\left( {\sum\limits_{k = 1}^{m}\begin{pmatrix}{{{H^{T}(k)}{H(k)}\left( {{1/g}(k)} \right)} -} \\{\left( {\left\lbrack {\nabla{H_{2}^{T}(k)}} \right\rbrack/{g(k)}} \right)\left( {1 - {g(k)}} \right)}\end{pmatrix}} \right)}^{- 1}H^{T}\Delta \; g}} & \left( {39\text{-}I} \right)\end{matrix}$

Execute process III-B by analogy with the steps of Estimation Process Iearlier enumerated earlier hereinabove. (Note that the expression(1/g(k)) is dimensionless since the “1” is in gravity accelerationunits, same units as gravity measurement g(k).) The dimensional analysis(physical units analysis) of equations (39) and (39-I) is given by:(param)=[(grav/param)²(grav/grav)−((grav²/param²)/grav)(grav)]⁻¹(grav/param)(grav).The expression “grav” represents gravitational acceleration in m/sec²and “param” represents the units of any given one of the parameters.

The iteration constant c is experimentally adjusted for fastestconvergence, preferably convergence on the first or second iteration.Inspection of the different equation forms (20), (29), (39), and (39-I)suggests that the fastest-convergence value for iteration constant c mayvary somewhat from process embodiment to embodiment. Indeed, because theiteration(s) occur in a multi-dimensional mathematical space, there areequally-multiple constants c_(ii) that can be configured and used tosupport each process embodiment taught herein. The iterations maysomewhat hunt or spiral toward the minimum of optimization function

(or

1) where the gradient vanishes in the multi-dimensional mathematicalspace. Furthermore, iteration constant c is in some embodiments replacedwith a diagonal matrix c having as many possibly-differentindependently-configured constant elements c_(ii) down its main diagonalas there unknowns (e.g., 6) in parameter update vector Δp. Each of thediagonal elements c_(ii) is chosen with a value approximately unity (1),or in a likely range 0.8<c_(ii)<1.2 or substantially in the range0<c_(ii)<2. This use of such constant elements c_(ii) recognizes thatexperimentation may show that iterations can be reduced in number onaverage by adjusting these constant elements c_(ii) independently.

In FIG. 7A, another recalibration process embodiment 3300 acquires oneor more new measurements at a time for input to any estimation processembodiment(s) described elsewhere herein and utilized in FIG. 7B.Recalibration process 3300 commences with BEGIN 3305 and determineswhether an entry criterion is met at a step 3310. An example of entrycriterion uses any one some or all of the following criteria: 1) timegating based on RTC 2526 over enough hours or days justify thecalibration check, 2) user call for a navigation application, 3)environmental sensor 1160 input indicating a substantial temperaturechange, accelerometer voltage regulator voltage change, and/or otherenvironmental change justifying recalibration, 4) or other suitabletest. If the entry criterion is not met at step 3310, then operations goto RETURN 3395, otherwise operations proceed to a step 3320 that puts aset of pertinent already-determined parameters at the disposal of theprocedure. For example, such parameters p in some embodiments are a setof parameters p obtained in a wholesale recalibration process that hasgathered m measurements at some recent time and are associated withsimilar environmental sensor 1160 readings, e.g., same temperature andvoltage. In some other embodiments, such parameters p are based onmeasurements one-by-one, hour-by-hour, or day-by-day, or otherwiseoccasional measurements.

Notice that FIG. 7A in some modes or embodiments does not need to cuethe user, such as when a stable, diverse position is detected andelapsed time supported by RTC 2526 enables a new measurementoccasionally to keep the calibration updated. An example of anew-measurement test first uses the currently available parameters p toconvert the new accelerometer 1140 measurement vector f^(m)(k)=[f_(x)^(m)(k) f_(y) ^(m)(k) f_(z) ^(m)(k)]^(T) to an actual accelerationvector f^(a)(k)=[f_(z) ^(a)(k) f_(z)(k)]. Then the measurement diversitytest checks whether the inner product of f^(a)(k)=[f_(x) ^(a)(k) f_(y)^(a)(k) f_(z)(k)] with each actual acceleration vector f^(a)(k′) formeasurements k′ in the applicable measurement set is, e.g., less than apredetermined value such as 0.8 for all but at most e.g. one (1) of themeasurements k′. (If there is one earlier measurement k′ for which thetest fails, then earlier measurement can be culled in FIG. 7B.) Thiskeeps the angles between the measurement-related actual accelerationvectors diverse (e.g., angles greater than arcos (0.8) up to 180degrees. In some other modes, user cueing is provided to facilitaterapid acquisition of measurements. In this way, a further seamless,automatically self-calibrating accelerometer support for navigationapplications is provided.

A succeeding input step 3330 automatically monitors sensors X, Y, Z fromthe 3-axes accelerometer 1140 to determine when a new set of stablemeasurements is available, whereupon the new set of measurementsf^(m)(k)=[f_(x) ^(m)(k) f_(y) ^(m)(k) f_(z) ^(m)(k)]^(T) is recordedalong with the concurrent environmental variables. Then a furtherpreliminary gating process has steps 3340 and 3350 to respectivelycompute a function and test of measured gravitational acceleration suchas (1−g²(k))²<ε₄, or a range check |(1−g²(k))|<1+ε₆, or a range check on(1−g(k)), or otherwise. In the step 3350, if the test passes, then thenew measurement does not add significant new information for purposes ofobtaining the already-determined parameters p, and so operations go toRETURN 3395. In the step 3350, if the test fails, then operationsproceed through point (B) of FIG. 7A and on to FIG. 7B.

In FIG. 7B, operations proceed through point (B) to a step 3510 thatkeeps a revolving set of measurements and/or already-determinedparameters p. The latest measurement is recorded and included in thisset. At least one earlier measurement is deselected or culled from therevolving set such as by applying any one or a combination of thefollowing de-selection criteria: 1) least-recent (oldest) measurement orset of parameters, 2) outlier in a subset of oldest measurements oroldest parameters, 3) least-diverse measurement relative to the newmeasurement. In this way, the embodiment provides a running window ofobservations in one or more sets, respectively having similarenvironmental variables pertinent to the measurements within a givenset, for re-calibration purposes. The de-selection process is madeflexible enough to allow the re-calibration to trend away from earliercalibrations when such trend exists and should be recognized.

Operations execute a step 3520 to produce newly determined parametersp′, such as by combining the latest parameters with the now-culledrevolving set of already-determined parameters from step 3510. Anyestimation process as described elsewhere herein is suitably executedbased on the now-culled revolving set from step 3510 to produce newlydetermined parameters p′. The newly determined parameters p′ become thestarting point for later re-calibration iterations in place of theinitial values in TABLE 1 when the process embodiment of FIGS. 7A and 7Bis called at some later time. In this way, unnecessary iterations areobviated, and processing time and power dissipation are reduced.

A further step 3530 generates and tests a metric comparing the updatedparameters p′ to the recently-determined parameters p of step 3320. Forexample, the metric and test suitably involves a distance metric such as

(p′−p)^(T)(p′−p)<ε₇  (40)

In the step 3530, if the test passes, then the new measurement does notchange the already-determined parameters p much, and so operations go toRETURN 3535. In the step 3530, if the test fails, then operationsproceed to a further decision step 3540 to determine whether theparameter change metric (p′−p)^(T)(p′−p)>d indicates that the newmeasured parameters have one or more elements that are such substantialoutliers that the measurement f^(m)(k) is not credible, as indicated bythe metric exceeding a predetermined scalar distance d. If so,operations restore the culled measurement set to its original state andpass through a point C to step 3330 of FIG. 7A to take a newmeasurement. If credible (No at step 3540 of FIG. 7B), then operationsreach RETURN 3535. After RETURN 3535, operations may execute anavigation application 3170 based on newly determined parameters p fromrecalibration.

It should be evident from the description of FIGS. 7A and 7B and otherFigures as well that numerous variations and alternative processes forpracticing different embodiments can be readily devised by the skilledworker based on the teachings herein.

Description turns to a fourth optimization process embodiment (IV) forcalibrating accelerometers on-the-fly including cross-axes sensitivitiesand also takes a number “m” measurements indexed k of the squaredacceleration of gravity g²(k) at different postures. FIGS. 6A/6C depictprocess embodiment IV at the level of the flow illustration, althoughthe computational procedures are varied in process embodiment IV in someways relative to process embodiments I or IK, detailed hereinabove totake account of the cross axes sensitivities. The orientation of each ofthe postures does not need to be known.

A sensitivity matrix designated S1 is written out in full withcross-axes gain terms:

$\begin{matrix}{{S\; 1} = \begin{bmatrix}{S\; {xx}} & {S\; {xy}} & {S\; {xz}} \\{S\; {yx}} & {S\; {yy}} & {S\; {yz}} \\{S\; {zx}} & {S\; {zy}} & {S\; {zz}}\end{bmatrix}} & (41)\end{matrix}$

Next the sensitivity matrix S1 is divided into the matrix product of thediagonal matrix S of equation (12) and a matrix of ratios of cross axesterms to their main diagonal sensitivity values in equation (12):

$\begin{matrix}{{S\; 1} = {\begin{bmatrix}1 & {S\; {{xy}/S}\; {xx}} & {S\; {{xz}/S}\; {xx}} \\{S\; {{yx}/S}\; {yy}} & 1 & {S\; {{yz}/S}\; {yy}} \\{S\; {{zx}/S}\; {zz}} & {S\; {{zy}/{Szz}}} & 1\end{bmatrix}\begin{bmatrix}{S\; {xx}} & 0 & 0 \\0 & {S\; {yy}} & 0 \\0 & 0 & {S\; {zz}}\end{bmatrix}}} & (41)\end{matrix}$

Inspection of the above matrix of ratios in light of the physicalsymmetry of an accelerometer indicates that matrix of ratios issymmetric. The cross axes ratios can each be interpreted to first-orderas (small) direction cosine cos(90°−δ_(i)) of an almost-90-degree angle.The direction cosine substantially equals its respective small departureangle δ_(i) from perfect perpendicularity measured in radian measurefrom each sensor toward another sensor with respect to which a givenmain sensitivity value pertains. Symmetry exists because the physicalangle between two given sensors does not depend which sensor is thoughtof first. Accordingly, three departure angles are defined as follows.

Departure angle δ₁ is the angle by which the Y sensor departs from beingperpendicular to the X sensor.

δ₁ Sxy/Sxx=Syx/Syy  (42.1)

Departure angle δ₂ is the angle by which the Z sensor departs from beingperpendicular to the Y sensor.

δ₂ =Syz/Syy=Szy/Szz  (42.2)

Departure angle δ₃ is the angle by which the Z sensor departs from beingperpendicular to the X sensor.

δ₃ =Sxz/Sxx=Szx/Szz  (42.3)

Next, the inverse of the sensitivity matrix is obtained in terms ofdiagonal matrix Y of equation (13) and the matrix of those ratios foundin equations (41) and (42.1), (42.2), (42.3), which is now designatedbold-delta δ:

Y1=S1⁻¹=(δS)⁻¹ =Yδ ⁻¹  (43)

With the cross-axes departure angles assumed small, the inverse of thematrix of ratios simply has a minus sign on the departure angles:

$\begin{matrix}{{Y\; 1} = {\begin{bmatrix}{Y\; {xx}} & 0 & 0 \\0 & {Y\; {yy}} & 0 \\0 & 0 & {Y\; {zz}}\end{bmatrix}\begin{bmatrix}1 & {- \delta_{1}} & {- \delta_{3}} \\{- \delta_{1}} & 1 & {- \delta_{2}} \\{- \delta_{3}} & {- \delta_{2}} & 1\end{bmatrix}}} & (44)\end{matrix}$

Gravity equation (11) is revised using equation (43) to take account ofthe cross axis angles as follows.

(f ^(m)−μ)^(T)(Yδ ⁻¹)^(T)(Yδ ⁻¹)(f ^(m)−μ)=g ²  (45)

Equation (45) in algebraic form (compare to equation (15)) is written:

$\begin{matrix}{{g(k)} = \left. \sqrt{}\left\{ {{Y\; {{xx}^{2}\left\lbrack {\left( {{f_{x}^{m}(k)} - \mu_{x}} \right) - {\delta_{1}\left( {{f_{y}^{m}(k)} - \mu_{y}} \right)} - {\delta_{3}\left( {{f_{z}^{m}(k)} - \mu_{z}} \right)}} \right\rbrack}^{2}} + \begin{matrix}{{Y\; {{yy}^{2}\left\lbrack {{- {\delta_{1}\left( {{f_{x}^{m}(k)} - \mu_{x}} \right)}} + \left( {{f_{y}^{m}(k)} - \mu_{y}} \right) - {\delta_{2}\left( {{f_{z}^{m}(k)} - \mu_{z}} \right)}} \right\rbrack}^{2}} +} \\\left. {Y\; {{zz}^{2}\left\lbrack {{- {\delta_{3}\left( {{f_{x}^{m}(k)} - \mu_{x}} \right)}} - {\delta_{2}\left( {{f_{y}^{m}(k)} - \mu_{y}} \right)} + \left( {{f_{z}^{m}(k)} - \mu_{z}} \right)} \right\rbrack}^{2}} \right\}\end{matrix}} \right. \right.} & \left( {45A} \right)\end{matrix}$

Equation (45) in effect uses a sum of squares of the different correctedsensor outputs to generate a gravity-squared value for each measurementand equation (45) for gravity takes the square root. For someembodiments, this constitutes a sufficient approximation. Some otherembodiments recognize that because the sensors are not perpendicular toone another, the sum of squares of even the true acceleration componentsmeasured by each of the sensors departs somewhat from the accelerationbeing experienced by the platform. Accordingly, equation (45A) can beadjusted in any suitable manner, such as by applying factors (1−δ₁ ²)and (1−δ₂ ²−δ₃ ²) for squares of (small) direction cosines, and written:

$\begin{matrix}{{g(k)} = \left. \sqrt{}\left\{ {{{Yxx}^{2}\left\lbrack {\left( {{f_{x}^{m}(k)} - \mu_{x}} \right) - {\delta_{1}\left( {{f_{y}^{m}(k)} - \mu_{y}} \right)} - {\delta_{3}\left( {{f_{z}^{m}(k)} - \mu_{z}} \right)}} \right\rbrack}^{2} + {\left( {1 - \delta_{1}^{2}} \right){{Yyy}^{2}\left\lbrack {{- {\delta_{1}\left( {{f_{x}^{m}(k)} - \mu_{x}} \right)}} + \left( {{f_{y}^{m}(k)} - \mu_{y}} \right) - {\delta_{2}\left( {{f_{z}^{m}(k)} - \mu_{z}} \right)}} \right\rbrack}^{2}} + {\left( {1 - \delta_{2}^{2} - \delta_{3}^{2}} \right){{Yzz}^{2}\left\lbrack {{- {\delta_{3}\left( {{f_{x}^{m}(k)} - \mu_{x}} \right)}} - {\delta_{2}\left( {{f_{y}^{m}(k)} - \mu_{y}} \right)} + \left( {{f_{z}^{m}(k)} - \mu_{z}} \right)} \right\rbrack}^{2}}} \right\} \right.} & \left( {45B} \right)\end{matrix}$

Process embodiment IV also establishes an optimization function, suchas:

$\begin{matrix}{{{\; 1} = {\sum\limits_{k = 1}^{m}{F\; 1(k)}}},{{{where}\mspace{14mu} F\; 1(k)} = \left( {{g(k)} - 1} \right)^{2}}} & \left( {33\text{-}I} \right)\end{matrix}$

The optimization summand function F1(k) this time is a function of aconveniently low-dimensional parameter vector p1 holding the threedeparture angles as three unknowns in an angle-only process embodimentdesignated IV-A, and equation (16) is revised to a 3-vector:

p1=[δ₁δ₂δ₃]^(T)  (46-A)

A more involved approach to process embodiment IV instead definesparameter vector p2 nine parameters including the axes gains, biases,and three departure angles as unknowns in a process embodimentdesignated IV-B, and equation (16) is instead revised to a 9-vector

p2=[YxxYyyYzzμ_(x)μ_(y)μ_(z)δ₁δ₂δ₃]^(T)  (46-B)

Here again, parameter determination does not call fordemandingly-precise test orientations. Instead, in process embodimentIV, (either IV-A or IV-B) an iterative process according to embodimentsI or IK is applied. For instance, a gradient descent process is appliedusing iterations wherein the change of parameters equal to minus theinverse of the matrix M1 of second partial derivatives of theoptimization function F1(k) multiplied by the gradient of theoptimization function F1(k), as stated by equation (47):

$\begin{matrix}{{\Delta \; p\; 1} = {{- \left( {\sum\limits_{k = 1}^{m}{M\; 1(k)}} \right)^{- 1}}{\sum\limits_{k = 1}^{m}{{\nabla F}\; 1(k)}}}} & (47)\end{matrix}$

The gradient here is again a column vector of first partial derivativesof optimization function F1(k) now using gravity g(k) of equation (45B),the partial derivatives with respect to the parameters of equation (46A)or (46B) depending on embodiment. The gradient is given for the kthmeasurement by partial differentiating optimization function F1 ofequation (33-I) with respect to the parameters of either equation (46A)or (46B) to obtain equation (48) in terms of a gradient-related rowH₃(k) of fully-written-out algebraic expressions involving the threedeparture angles δ_(i):

∇F1(k)=−2H ₃ ^(T)(k)(1−g(k))/g(k)  (48)

Column vector H₃ ^(T)(k) is the transpose of the kth row of a relationmatrix H₃ and H₃ ^(T)(k)/g(k) is substituted for H in process I. MatrixM1 of second partial derivatives of the optimization function F1(k) isderived by partial differentiation of fully-written-out gradient ∇F1(k)equation (48) with respect to the parameters of either equation (46A) or(46B) for the optimization function if applying process III-B.

Estimation Process IV-A

0. Execute an estimation process such as I or IK to obtain goodestimates of bias errors μ_(x), μ_(y), μ_(z) and axes gain reciprocalsYxx, Yyy, Yzz.1. Initialize three departure angles δ_(i) parameters p1=[0 0 0] oraccording to most recent calibrated departure angle parameters δ_(i) ifavailable.2. Use the Step 0 data for measured average acceleration on all threeaxes:

[f_(x) ^(m)f_(y) ^(m)f_(z) ^(m)]^(T).

3. Execute an estimation process such as I or IK to obtain goodestimates of departure angles δ₁ δ₂ δ₃.4. Generate the gain matrix Y1 including cross axes gains according toequation (44).

Process IV-A generates a set of updated accelerometer calibrationparameters by desirably executing sub processes (e.g., step 0 and steps1-3) to generate different subsets in succession of the accelerometerparameters.

Estimation Process IV-B

1. Initialize the nine parameters p2=[1, 1, 1, 0, 0, 0, 0, 0, 0] oraccording to most recent calibrated parameters if available.2. Use the data for measured average acceleration on all three axes:

[f_(x) ^(m)f_(y) ^(m)f_(z) ^(m)]^(T)

3. Execute an estimation process such as I or IK to obtain goodestimates of bias errors μ_(x), μ_(y), μ_(z) and axes gain reciprocalsYxx, Yyy, Yzz and departure angles δ₁ δ₂ δ₃.4. Generate the gain matrix Y1 including cross axes gains according toequation (44).

Process IV-B generates a set of updated accelerometer parameterstogether, and iterations allow interactions between the parameters to bemore fully accounted for in getting good values for them.

Description now turns to a multi-mode recalibration embodiment of FIG.8.

In FIG. 8, a call from either user or internal software occurs at a step3605 and calls the system to launch a navigation application. Then astep 3610 updates a data record regarding any recalibration criterionbased on date/time RTC 2526 and environmental sensor 1160. Next, adecision step 3620 evaluates a recalibration criterion for determiningwhether to invoke a recalibration mode that involves m measurementstaken by user cueing and collective processing for them, or not. Therecalibration criterion may be programmed in any appropriate manner. Forexample, if RTC elapsed time alone is the reason for recalibration, thena less aggressive single-measurement calibration update to a runningwindow of measurements under similar environmental variables (No at step3620) is illustratively applied with or without user cueing. On theother hand, if a substantial temperature increase or decrease hasoccurred or a significant accelerometer voltage regulator voltage changehas occurred or the accelerometer 1140 has never been calibrated, then(Yes at step 3620) a more-aggressive recalibration is performed. Themore-aggressive recalibration mode takes multiple new measurements anduses prompt transducer 1180 to cue multiple different user-establishedorientations. If Yes at step 3620, operations go to a mode using process2800 of FIG. 6A and proceed through point A to perform recalibrationwith numerous new measurements. If No at step 3620, operations insteadgo to a second, different mode such as one using process 3300 of FIG. 7Aand then go to point B thereof to perform recalibration with fewer newmeasurements, or even a single new measurement, which is combined withprevious measurements that have similar environmental variables. Forexample, m measurements are suitably used that are or have been takenwhen the device has been at about the same temperature and about thesame voltage regulator supply voltage for the accelerometer. The mmeasurements are utilized to estimate the accelerometer parameters astaught herein. Either way, thereafter operations proceed to launch thenavigation application 3170 supported by the updated calibration of theaccelerometer parameters.

FIG. 9 shows an embodiment of structure and process for usingaccelerometer gain parameter estimates Yxx, Yyy, Yzz and bias parameterestimates μ_(x), μ_(y), μ_(z) included in parameters p in a positionengine. In FIG. 8, a step 3710 provides estimation of accelerometer gainand bias by calibration or recalibration according to any of the processembodiments described hereinabove.

In FIG. 9, a position engine 3720 is provided to receive GPS (GlobalPositioning System) and Inertial measurements (comprised ofaccelerometers and/or, gyros and/or, e-compass) and then blend theinertial output with GPS measurements obtained by a GPS engine 1190 inany of FIGS. 1-3. Conveniently calibrated MEMS accelerometers 1140herein provide a seamless navigation experience to end users even whenGPS visibility is absent or poor, such as when the environment isseverely affected by multi-path propagation. Such recalibration therebydelivers a very attractive value-add to GPS-enabled portable devicessuch as those of FIG. 1 and others described herein. Estimation ofaccelerometer parameters improves runtime acceleration measurementaccuracy and dead reckoning of position in the absence of GPS, as wellas usefully blending with GPS when GPS has moderate or poor quality.Blending involves a Kalman filter implementation, or other suitableimplementation, that uses both GPS as well as dead reckoning DRinformation to give a blended output. The recalibration processes,circuits, devices, and systems taught herein can be accurate, reliable,and easy for end-users to use. Computed true acceleration Y*(f^(m)−μ)for the INS is based on the 3-axis accelerometer actual sensor outputsf_(x) ^(m)(k), f_(y) ^(m)(k), f_(z) ^(m)(k), which have bias errors andgain errors.

Calibration step 3710 beneficially supplies accurate gain parameterestimates Yxx, Yyy, Yzz and bias parameter estimates μ_(x), μ_(y), μ_(z)by any of the improved processes described hereinabove. Applying thecorrect bias and gain parameters to generate a computed trueacceleration Y*(f^(m)−μ) delivers a good approximation to the actualtrue acceleration f^(a)=[f_(x) ^(a) f_(y) ^(a) f_(z) ^(a)]^(T) that theaccelerometer 1140 is actually experiencing in the navigationapplication. It is important to correct the bias and gain errors inactual accelerometer sensor outputs f_(x) ^(m)(k), f_(y) ^(m)(k) f_(z)^(m)(k), to prevent a rapid buildup of velocity measurement error anddistance measurement error in the navigation application. Such rapidbuildup can occur because velocity is the time-integral of accelerationand because distance is the time-integral of velocity.

Accurate parameter estimates of the bias errors and gain errors of agiven accelerometer 1140 help to define the state initialization for aposition engine 3720 that combines GPS position input and 3-axisaccelerometer (INS) actual sensor outputs f_(x) ^(m)(k), f_(y) ^(m)(k),f_(z) ^(m)(k). A concept of Dead Reckoning is motivated by a process forcombining information that adds a most-recent blended position x_(blend)and velocity v_(blend) to twice-integrated corrected accelerationaccording to equation (49.1). It is particularly useful in scenarioswhere GPS visibility is limited.

$\begin{matrix}{{x_{blend}(t)} = {{x_{blend}\left( t_{gps} \right)} + {\left( {t - t_{gps}} \right){v_{blend}\left( t_{gps} \right)}} + {\int_{tgps}^{t}{\int_{tgps}^{t}{\left\lbrack {g - {Y*\left( {f^{m} - \mu} \right)}} \right\rbrack \ {t}\ {t}}}}}} & (49.1)\end{matrix}$

In equation (49.1), the double-integral performs definite integrationtwice of the computed actual acceleration with respect to time t,starting with the time t_(gps) of a most-recent blended vector positionmeasurement x_(gps) and most-recent vector velocity measurement v_(gps).The measured accelerometer sensor inputs f^(m) are corrected by aprocessor in FIG. 1 or 2 applying gain parameter estimates Yxx, Yyy, Yzzand bias parameter estimates μ_(x), μ_(y), μ_(z) from step 3710 as shownin equations (49.1) and (49.2). The accelerometer measures the gravityvector g with the platform at rest, so the difference between gravityvector g (essentially unity 1.00) and the compensated measurementY*(f^(m)−μ) is expressed in the integrand.

A most recent velocity input v_(gps) is added to integrated correctedacceleration according to equation (49.2) to obtain blended velocityv_(blend)(t):

$\begin{matrix}{{v_{blend}(t)} = {{v_{blend}\left( t_{gps} \right)} + {\int_{tgps}^{t}{Y*\left( {f^{m} - \mu} \right)\ {t}\ {t}}}}} & (49.2)\end{matrix}$

For greater position accuracy, and to remove the effects of statisticalerror in various measurements, multiple GPS vector position measurementx_(gps) over occasional times and/or multiple computed actualacceleration measurements over independently-occasional time in someembodiments are instead combined using a Kalman filter for positionengine 3720. Kalman filter processing of time sequence data need not betediously described here. The point for the purposes of the presentdescription is that a well-defined state initialization with gainparameter estimates Yxx, Yyy, Yzz and bias parameter estimates μ_(x),μ_(y), μ_(z) from step 3710 facilitates quick convergence or settling ofa Kalman filter for position engine 3720 such as in Inertial NavigationINS applications. In this way, position engine 3720 usefully supplies ablended position output for display or further analysis and use by thenavigation application 3170 (2524).

FIG. 10 shows an embodiment of structure and process for usingaccelerometer gain and bias estimates from any of FIGS. 4-8 in TiltCompensation for an e-compass 1150 and/or gyro 1170 or other device thatbenefits from tilt compensation. In FIG. 10, as in FIG. 9, calibrationstep 3710 beneficially supplies accurate gain parameter estimates Yxx,Yyy, Yzz and bias parameter estimates μ_(x), μ_(y), μ_(z) by any of theimproved calibration processes described hereinabove. In FIG. 10,accelerometer 1140 supplies a post-calibration set of raw run-timeacceleration measurements f^(m)=[f_(x) ^(m)(k), f_(y) ^(m)(k), f_(z)^(m)(k)]^(T) to measure acceleration when it may or may not be the sameas gravity alone. Accelerometer bias correction is applied by a summer3910 effectively subtracting step 3710 bias estimates μ[μ_(x), μ_(y),μ_(z)]^(T) from the respective raw acceleration measurements f^(m).Computed true acceleration Y*(f^(m)−μ) is generated by a multiplier 3920to multiply the resulting vector output (f^(m)−μ) of summer 3910 by therespective parameter estimates Yxx, Yyy, Yzz. Applying the correct biasand gain parameters to generate a computed true acceleration Y*(f^(m)−μ)delivers a useful measurement of the actual true accelerationsf^(a)=[f_(z) ^(a) f_(y) ^(a) f_(z) ^(a)]^(T) that the accelerometer 1140is actually experiencing in the navigation application.

In FIG. 10, correcting the bias and gain errors in actual accelerometer1140 sensor outputs f_(x) ^(m)(k), f_(y) ^(m)(k), f_(z) ^(m)(k),beneficially improves the results from tilt-compensation process 3930,which means that e-compass 1150 direction measurements more accuratelysupport navigation applications 3170 (2524) and provide a better userexperience. The output of multiplier 3920 is a set of compensatedmeasurements that are delivered to a Tilt Compensation process 3930,such as for tilt-compensating e-compass 1150 and/or gyro 1170 of FIGS.1-3. Some information on tilt compensation process 3930 is disclosed inUS patent application titled “Processes for More Accurately CalibratingE-Compass for Tilt Error, Circuits, and Systems” Ser. No. ______(TI-65997) filed on even date herewith, and said U.S. patent applicationis incorporated herein by reference in its entirety.

In FIG. 11, various system embodiments as described herein aremanufactured in a process 4300. Step 4340 provides a particular designand printed wiring board (PWB) of the system 1700 unit having one ormore integrated circuits, such as for a modem, a processor coupled to amodem, a controlled power management circuitry, one or more peripheralscoupled to the processor, and a user interface coupled to the processor.In steps 4342 and 4345 a storage, such as SDRAM and Flash memory forcoupling to on-chip memory, is coupled to the system and hasconfiguration software and initialization parameters according to any ofFIGS. 4-10 for an accelerometer 1140, as well as navigation applicationsand other system software.

Step 4350 tests operations of the accelerometer 1140 and other circuitsby confirming rapid and accurate accelerometer parameter estimation andmeasurement corrections, and operations of the integrated circuit(s) andsystem in actual application. SoC (system on chip) performance and powerconsumption with processes from any of FIGS. 4-10 and variousalternative estimation processes I, IK, II, III, IV or otherwise, can becompared at the development phase and the most desirable estimationprocesses selected for a given system. Various embodiments taught hereinare respectively attractive for different types of systems at low,medium and high-end performance/marketing points.

In step 4350, verification and test operations are applied pertaining toreal-time and non-real-time operations in navigation applications suchas location-based applications, position sensing, velocity sensing,directional heading applications, etc. Other test operations involvepower management, various real-time scenarios, system stability andperformance, satisfactory operation of mobile video display forcontinuity of content, phone, e-mails/data service, web browsing, voiceover packet, content player for continuity of content, camera/imaging,audio/video synchronization, and other such operation that is apparentto the human user and can be evaluated by system use. Also, varioussecurity attack scenarios are applied.

Step 4360 adjusts supporting parameters of the accelerometer 1140circuitry, the accelerometer calibration software, and the system forfaster calibration and navigation application execution, lowerpower/energy dissipation, and maintained or enhanced QoS (quality ofservice). Supporting parameters include enable/disable register bits,parameter registers bit lengths, iteration constants c or c_(ii),convergence metric epsilons, measured-gravity screening range, dataoutlier distance d, FIG. 4 RTC gating elapsed-time intervals forenabling calibration, environmental sensor thresholds and ranges forinitiating a call for calibration, accelerometer data averaging timeinterval in FIG. 5, and any other supporting parameters involved inprocesses described hereinabove. If further increased efficiency oraccuracy is called for in a step 4355, then step 4360 adjusts orreconfigures parameter(s) and safety margins and loops back to reloadparameter(s) at step 4345 and do further testing. When satisfactory atstep 4355, operations proceed to step 4370, where adjusted parameter(s)are loaded into the Flash memory or otherwise by system manufacturer ora supplier, and components are assembled on PWB in volume manufacturingto produce resulting system units and END 4375 is reached.

Various embodiments are used with one or more processors that performelectronic processes on signals representing the accelerometer data andgenerate processor signals representing recalibrated parameters andcorrected acceleration vectors. Processors perform signal processingaccording to instructions and by actual electronic processes thatrepresent or correspond to the various matrix operations disclosedherein. Memory circuits hold physical representations of instructionsand parameters. In various embodiments, the accelerometer 1140 is aphysically compact device including 1) a set of tri-axes MEMSaccelerometer sensors, 2) the accelerometer sensors combined with anonvolatile memory holding calibration software and/or parameters asdescribed herein, 3) the accelerometer sensors combined with amicroprocessor for the accelerometer 1140 as well as nonvolatile memoryholding the calibration software and/or parameters, 4) e-compass 1150and/or, Gyro 1170 combined with any of the other embodiments and furtherhaving tilt compensation software and parameters, 5) position sensing(e.g., GPS) unit combined with then any other embodiments and furtherhaving GPS software and parameters, and/or 5) a high-performanceapplications processor SoC integrated circuit for supporting pluralapplications, and having either integrated therein or coupled theretoany of the other embodiments and/or holding any of the software and/orparameters, or 6) other suitable assembly.

In FIG. 12, manufacturing process operations for making integratedcircuit chips are illustrated, such as for subsequent use in systemintegration of FIG. 11. A step 4510 prepares RTL (register transferlanguage) design code representing the hardware of any part or all ofFIGS. 2 and 3, and prepares software code according to any of FIGS. 4-10and/or as described herein to run on the hardware as well. From the RTLis prepared a netlist of the actual gates in the integrated circuit,followed by place and route to establish the physical layout of theintegrated circuit. A step 4520 delivers the layout on an physicalmedium such as a pattern generation tape and prepares reticles forultraviolet lithography or other wafer fab process. Wafer fabrication isthen performed using the reticles in a step 4530. Serial-scan testing ofscan able registers and other testing is performed using emulation EMUof FIG. 2 on the manufactured integrated circuits in a step 4540. If theintegrated circuits do not pass testing operations may go back to step4510 or any applicable intermediate step so that the manufacturedintegrated circuits do pass testing. Operations proceed on toassembly/test step 4550 wherein an integrated circuit plastic packagingor ceramic or other packaging may be applied.

Because of the electronic operations representing matrix operationsdescribed earlier hereinabove, a processor with one or more fastmultiply-accumulate units provides desirably high performance in someembodiments. Each processor can have a pipeline for high performance andselected from the group consisting of 1) reduced instruction setcomputing (RISC), 2) digital signal processing (DSP), 3) complexinstruction set computing (CISC), 4) superscalar, 5) skewed pipelines,6) in-order, 7) out-of-order, 8) very long instruction word (VLIW), 9)single instruction multiple data (SIMD), 10) multiple instructionmultiple data (MIMD), 11) multiple-core using any one or more of theforegoing, and 12) microcontroller pipelines, control peripherals, andother micro-control blocks using any one or more of the foregoing.

Such integrated circuits with processors are depicted in various exampleforms in FIGS. 12A, 12B, and 12C with reference to enumerations ofstructures in FIG. 1.

In FIG. 12A, a processor 1030 is flanked on both sides by memory1034/1036/1032 and has an accelerometer 1140 and an environmental sensor1160 next to processor 1030. Gyro circuitry 1170 can also be provided.The memory in FIGS. 12A, 12B, 12C includes a memory for holding physicalrepresentations of instructions defining processes of any one, some, orall of various embodiments herein.

In FIG. 12B, a GPS baseband decoder 2160 of FIG. 3 is associatedrow-wise with centrally located processor 1030. Accelerometer 1140 andenvironmental sensor 1160 together with at least part of a gyro and/or,an electronic compass 1150 are laid out on the opposite side ofprocessor 1030 from GPS decoder 2160. Memory 1034/1036/1032 occupiessubstantially the balance of the layout.

FIG. 12C, GPS baseband decoder 2160 is surrounded on three sides bymemory 1034/1036/1032. Decoder 2160 is situated opposite on the chipfrom processor 1030. A SoC system bus 1721 at metal level L3, and 1734at metal level L4, joins decoder 2160 and processor 1030 withlength-wise access by the bus line to memory. Accelerometer 1140 and anenvironmental sensor 1160 occupy a corner of the chip next to processor1030. Electronic compass circuitry 1150 occupies an opposite corner ofthe chip next to processor 1030. Gyro circuitry is also provided.

ASPECTS (See Notes paragraph at end of this Aspects section.)

1A. The electronic circuit claimed in claim 1 further comprising atleast part of an electronic compass situated and coupled to saidelectronic processor on a same single chip.

1B. The electronic circuit claimed in claim 1 further comprising atleast part of a gyro situated and coupled to said electronic processoron a same single chip.

7A. The information storage medium claimed in claim 7 further comprisinga second set of instructions to generate at least one distinctaccelerometer calibration parameter.

7B. The information storage medium claimed in claim 7 wherein theinstructions include instructions to analyze the accelerometer data foracceptability.

7C. The information storage medium claimed in claim 7 wherein theinstructions include instructions to generate prompting transducercontrol signals.

7D. The information storage medium claimed in claim 7 wherein the mediumincludes an integrated circuit with a nonvolatile memory.

10A. The process claimed in claim 10 further comprising separatelygenerating at least one additional signal representing a distinctaccelerometer calibration parameter.

10B. The process claimed in claim 10 further comprising processing ofsignals representing the multi-axes accelerometer data for acceptabilitybeforehand.

10C. The process claimed in claim 10 further comprising producingprompting transducer control signals.

10D. The process claimed in claim 10 further comprising electronicallyblending the signals representing multi-axes accelerometer data, thesignals representing accelerometer calibration parameters, andadditional signals representing satellite positioning decoder data.

10E. The process claimed in claim 10 further comprising electronicallyexecuting a navigation application using the signals representingaccelerometer calibration parameters and run-time signals representingaccelerometer data.

16A. The system claimed in claim 16 wherein said accelerometer sensorsare mounted on and least three different axes.

16B. The system claimed in claim 16 wherein said electronic processor isalso operable to cause said transducer to emit a distinct seconduser-perceptible prompt signifying that the accelerometer signalsrepresenting accelerometer data resulting from at least one of thefreely-establishable orientations are satisfactory.

16C. The system claimed in claim 16 further comprising a manual inputcoupled to said electronic processor for user-initiation ofaccelerometer calibration.

16D. The system claimed in claim 16 further comprising a nonvolatilestorage coupled to said electronic processor and holding a softwareapplication responsive to the signals representing the calibrationparameters.

Notes: Aspects are paragraphs which might be offered as claims in patentprosecution. The above dependently-written Aspects have leading digitsand internal dependency designations to indicate the claims or aspectsto which they pertain. Aspects having no internal dependencydesignations have leading digits and alphanumerics to indicate theposition in the ordering of claims at which they might be situated ifoffered as claims in prosecution.

Processing circuitry comprehends digital, analog and mixed signal(digital/analog) integrated circuits, ASIC circuits, PALs, PLAs,decoders, memories, and programmable and nonprogrammable processors,microcontrollers and other circuitry. Internal and external couplingsand connections can be ohmic, capacitive, inductive, photonic, anddirect or indirect via intervening circuits or otherwise as desirable.Numerical values in the description are illustrative. “Physicalrepresentations” herein includes electrical voltages or currents,electrically-, magnetically- or optically-detectable physicalalterations, and otherwise detectable physical or electrical alterationsor programming. Process diagrams herein are representative of flowdiagrams for operations of any embodiments whether of hardware,software, or firmware, and processes of manufacture thereof. Flowdiagrams and block diagrams are each interpretable as representingstructure and/or process. While this invention has been described withreference to illustrative embodiments, this description is not to beconstrued in a limiting sense. Various modifications and combinations ofthe illustrative embodiments, as well as other embodiments of theinvention may be made. The terms “including”, “includes”, “having”,“has”, “with”, or variants thereof are used in the detailed descriptionand/or the claims to denote non-exhaustive inclusion in a manner similarto the term “comprising”. The appended claims and their equivalentscover any such embodiments, modifications, and embodiments as fallwithin the scope of the invention.

1. An electronic circuit comprising: accelerometer sensors mounted ondifferent axes; memory circuitry; and an electronic processor coupled tosaid accelerometer sensors and to said memory circuitry, said electronicprocessor operable to generate signals representing at least onecalibration parameter for the accelerometer sensors from signalsrepresenting data resulting from said accelerometer sensors in animprecise orientation of said accelerometer sensors.
 2. The electroniccircuit claimed in claim 1 wherein said memory circuitry holds physicalrepresentations of instructions executable by said electronic processorto generate the signals representing the calibration parameter throughan electronic process representing gradient-related matrixmultiplication.
 3. The electronic circuit claimed in claim 1 whereinsaid electronic processor has multiply-accumulate circuitry and isoperable to perform an electronic process representing gradient-relatedmatrix multiplication.
 4. The electronic circuit claimed in claim 1further comprising a satellite positioning decoder situated and coupledto said electronic processor on a same single chip.
 5. The electroniccircuit claimed in claim 1 wherein at least one of the accelerometersensors is situated and coupled on a same single chip to said electronicprocessor.
 6. The electronic circuit claimed in claim 1 furthercomprising an environmental sensor coupled to said electronic processor.7. An information storage medium holding a set of physicalrepresentations of instructions executable by an electronic processor togenerate signals representing accelerometer calibration parameters fromaccelerometer data from different imprecise orientations.
 8. Theinformation storage medium claimed in claim 7 wherein the instructionsinclude instructions to generate the parameters by gradient-relatedmatrix multiplication.
 9. The information storage medium claimed inclaim 7 wherein the instructions include instructions for performing arecursive mean square minimization process to generate the accelerometercalibration parameters.
 10. A process of accelerometer calibration, theprocess comprising generating signals representing accelerometercalibration parameters from signals representing multi-axesaccelerometer data from different imprecise accelerometer orientations.11. The process claimed in claim 10 wherein the generating includesgenerating the signals representing parameters through an electronicprocess representing gradient-related matrix multiplication.
 12. Theprocess claimed in claim 11 wherein the electronic process representinggradient related matrix multiplication includes a gradient of a functionof gravitational acceleration with respect to the calibrationparameters.
 13. The process claimed in claim 10 further comprisingexecuting a first mode to issue a prompt signal for reorientation and asecond mode to occasionally acquire signals representing unpromptedaccelerometer data and automatically generate signals representingupdated calibration parameters.
 14. The process claimed in claim 10wherein the generating includes performing an electronic processrepresenting a recursive mean square minimization to generate thesignals representing accelerometer calibration parameters.
 15. Theprocess claimed in claim 10 further comprising electronically utilizingsignals representing environmental sensor data to determine when toperform the generating.
 16. A system for measuring acceleration,comprising: a portable device having accelerometer sensors mounted ondifferent axes and operable to supply accelerometer signals representingaccelerometer data; a transducer associated with the portable device andoperable to emit a user-perceptible prompt; and an electronic processorcoupled to said accelerometer sensors and to said transducer, saidelectronic processor operable to cause said transducer to emit theuser-perceptible prompt, and said electronic processor operable togenerate signals representing at least one calibration parameter for theaccelerometer sensors in response to the accelerometer signals indifferent freely-establishable orientations of said portable device. 17.The system claimed in claim 16 wherein said signals representingcalibration parameters include signals representing bias parameters andaxes gain parameters.
 18. The system claimed in claim 16 wherein saidelectronic processor is operable to perform an electronic processrepresenting error feedback-minimization to generate the signalsrepresenting calibration parameters for the accelerometer sensors fromthe accelerometer signals.
 19. The system claimed in claim 16 whereinsaid electronic processor is operable to perform a gradient-relatedgeneration of the signals representing calibration parameters for theaccelerometer sensors from the accelerometer signals.
 20. The systemclaimed in claim 16 further comprising a timer circuit coupled to saidprocessor and wherein said electronic processor has an additional modeindependent of said transducer and responsive at least in part to saidtimer circuit to occasionally acquire signals representing accelerometerdata and automatically generate updated signals representing calibrationparameters.
 21. The system claimed in claim 16 wherein said processor isoperable to ascertain when the signals representing accelerometer dataare sufficiently stable in determining whether the signals representingaccelerometer data are acceptable to generate calibration parameters.22. The system claimed in claim 16 wherein said processor is operable toascertain when the signals representing accelerometer data substantiallyaccord with gravitational acceleration in determining whether thesignals representing accelerometer data are acceptable to generate thesignals representing calibration parameters.
 23. The system claimed inclaim 16 further comprising an environmental sensor coupled to saidelectronic processor, said electronic processor responsive to saidenvironmental sensor for initiation of accelerometer calibration. 24.The system claimed in claim 16 further comprising a satellitepositioning decoder coupled to said electronic processor wherein saidprocessor is operable as an electronic position engine to blend signalsrepresenting information from said satellite positioning decoder and thesignals representing accelerometer data.
 25. The system claimed in claim16 further comprising an electronic compass coupled to said electronicprocessor wherein said electronic processor is responsive to saidaccelerometer sensors and to the calibration parameters for tiltcompensation of said electronic compass.
 26. A process of manufacturecomprising attaching to a printed wiring board an electronic processorand an accelerometer and a flash memory holding a set of physicalrepresentations of instructions executable by the electronic processorto generate signals representing accelerometer calibration parametersfrom accelerometer data from different imprecise orientations.